问题:
从 Go 中的图像中提取像素数组字节数组的形式对于将其传递给 gl.Context 的 texImage2D 方法是必需的。所需的像素数组由按从左到右、从上到下的顺序排列的 RGBA 值组成。
解决方案:
要获取像素数组,请执行以下操作可以采取以下步骤:
package main import ( "fmt" "image" "image/png" "os" "io" "net/http" ) func main() { // Register other formats as needed image.RegisterFormat("png", "png", png.Decode, png.DecodeConfig) file, err := os.Open("./image.png") if err != nil { fmt.Println("Error: File could not be opened") os.Exit(1) } defer file.Close() pixels, err := getPixels(file) if err != nil { fmt.Println("Error: Image could not be decoded") os.Exit(1) } fmt.Println(pixels) } func getPixels(file io.Reader) ([][]Pixel, error) { img, _, err := image.Decode(file) if err != nil { return nil, err } bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y var pixels [][]Pixel for y := 0; y < height; y++ { var row []Pixel for x := 0; x < width; x++ { row = append(row, rgbaToPixel(img.At(x, y).RGBA())) } pixels = append(pixels, row) } return pixels, nil } func rgbaToPixel(r uint32, g uint32, b uint32, a uint32) Pixel { return Pixel{int(r / 257), int(g / 257), int(b / 257), int(a / 257)} } type Pixel struct { R int G int B int A int }
通过以下步骤,您可以有效地从图像中获取像素数组,以便与 Go 中的 texImage2D 方法一起使用。
以上是如何在 Go 中从图像中提取像素数组以获取'texImage2D”?的详细内容。更多信息请关注PHP中文网其他相关文章!