Masalah:
Mengekstrak tatasusunan piksel daripada imej dalam bentuk tatasusunan bait adalah perlu untuk menghantarnya kepada kaedah texImage2D gl.Context. Tatasusunan piksel yang dikehendaki terdiri daripada nilai RGBA yang disusun dalam susunan berurutan dari kiri ke kanan dan atas ke bawah.
Penyelesaian:
Untuk mendapatkan tatasusunan piksel, perkara berikut langkah boleh diambil:
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 }
Dengan mengikuti langkah-langkah ini, anda boleh mendapatkan tatasusunan piksel secara berkesan daripada imej untuk digunakan dengan kaedah texImage2D dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Tatasusunan Pixel daripada Imej dalam Go untuk `texImage2D`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!