문제:
/mobile/gl 패키지의 texImage2D 메서드를 사용하려면 픽셀 값에 액세스해야 합니다. 작업은 이미지의 픽셀 값을 바이트 배열로 변환하는 것입니다. 여기서 RGBA 값은 왼쪽에서 오른쪽, 위에서 아래로 연속적으로 배열됩니다.
해결책:
안타깝게도 img.Pixels()는 원시 픽셀 데이터를 추출하는 데 쉽게 사용할 수 있는 방법이 아닙니다. 그러나 해결책은 이미지의 픽셀을 반복하고 해당 RGBA 구성 요소를 추출하는 데 있습니다. 다음 단계에서는 접근 방식을 간략하게 설명합니다.
다음은 프로세스를 보여주는 구현 예:
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 }
이 접근 방식은 texImage2D와 함께 사용하기 위해 원하는 형식의 원시 픽셀 데이터를 포함하는 바이트 배열.
위 내용은 OpenGL 텍스처 생성을 위해 Golang에서 이미지 픽셀을 바이트 배열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!