Masalah:
Untuk mencipta tekstur menggunakan kaedah texImage2D dalam pakej /mobile/gl, akses kepada nilai piksel diperlukan. Tugasnya adalah untuk menukar nilai piksel imej kepada tatasusunan bait, dengan nilai RGBA disusun berturut-turut dari kiri ke kanan, atas ke bawah.
Penyelesaian:
Malangnya, img.Pixels() bukan kaedah yang tersedia untuk mengekstrak data piksel mentah. Walau bagaimanapun, penyelesaiannya terletak pada lelaran ke atas piksel imej dan mengekstrak komponen RGBA mereka. Langkah berikut menggariskan pendekatan:
Berikut ialah contoh pelaksanaan yang menunjukkan proses:
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 }
Pendekatan ini akan memberikan anda bait tatasusunan yang mengandungi data piksel mentah dalam format yang diingini untuk digunakan dengan texImage2D.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Piksel Imej kepada Tatasusunan Byte di Golang untuk Penciptaan Tekstur OpenGL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!