Problem:
Um Texturen mit zu erstellen Für die Verwendung der texImage2D-Methode im Paket /mobile/gl ist Zugriff auf Pixelwerte erforderlich. Die Aufgabe besteht darin, die Pixelwerte eines Bildes in ein Byte-Array umzuwandeln, in dem RGBA-Werte fortlaufend von links nach rechts und von oben nach unten angeordnet sind.
Lösung:
Leider ist img.Pixels() keine leicht verfügbare Methode zum Extrahieren der rohen Pixeldaten. Die Lösung besteht jedoch darin, über die Pixel des Bildes zu iterieren und ihre RGBA-Komponenten zu extrahieren. Die folgenden Schritte beschreiben den Ansatz:
Hier ist eine Beispielimplementierung, die dies demonstriert Der Prozess:
package main import ( "fmt" "image" "image/png" "os" ) func main() { // Open the image file file, err := os.Open("./image.png") if err != nil { fmt.Println("Error: Unable to open the image file.") return } defer file.Close() // Decode the image img, _, err := image.Decode(file) if err != nil { fmt.Println("Error: Unable to decode the image.") return } // Get the pixel array pixelArray, err := GetPixelArray(img) if err != nil { fmt.Println("Error: Unable to get the pixel array.") return } fmt.Println("Pixel array:") fmt.Println(pixelArray) } // GetPixelArray converts an image to a byte array containing the RGBA values of its pixels. func GetPixelArray(img image.Image) ([]byte, error) { bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y // Create a byte array to store the pixel values pixelArray := make([]byte, 0, width*height*4) // Iterate over the pixels and add their RGBA values to the byte array for y := 0; y < height; y++ { for x := 0; x < width; x++ { r, g, b, a := img.At(x, y).RGBA() pixelArray = append(pixelArray, byte(r/257)) pixelArray = append(pixelArray, byte(g/257)) pixelArray = append(pixelArray, byte(b/257)) pixelArray = append(pixelArray, byte(a/257)) } } return pixelArray, nil }
Dieser Ansatz stellt Ihnen ein Byte-Array zur Verfügung, das die rohen Pixeldaten enthält im gewünschten Format zur Verwendung mit texImage2D.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Bildpixel in ein Byte-Array in Golang für die OpenGL-Texturerstellung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!