Heim >Backend-Entwicklung >Golang >Wie rufe ich ein Pixel-Array von einem Go „image.Image' für OpenGL ES 2.0 ab?

Wie rufe ich ein Pixel-Array von einem Go „image.Image' für OpenGL ES 2.0 ab?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 20:26:11748Durchsuche

How to Retrieve a Pixel Array from a Go `image.Image` for OpenGL ES 2.0?

Pixel-Array-Abruf von Go Image.Image

In Go stellt die image.Image-Schnittstelle ein Bild dar, das Pixeldaten enthält. Um ein Pixelarray aus einem image.Image zur Verwendung in OpenGL ES 2.0 über die texImage2D-Methode zu erhalten, können Sie die folgenden Schritte ausführen:

  1. Definieren Sie eine benutzerdefinierte Pixelstruktur zur Darstellung einzelner Pixel:
type Pixel struct {
    R int
    G int
    B int
    A int
}
  1. Erstellen Sie eine Funktion, rgbaToPixel, um RGBA-Werte in ein Pixel umzuwandeln struct:
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)}
}
  1. Schreiben Sie eine Funktion, getPixels, um das Pixelarray aus dem Bild zu extrahieren.Bild:
func getPixels(img image.Image) ([][]Pixel, error) {
    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
}
  1. Laden ein Bild und rufen Sie getPixels auf, um das Pixel zu erhalten Array:
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)
}
  1. Verwenden Sie Pixel, um sie nach Bedarf an die texImage2D-Methode zu übergeben.

Das obige ist der detaillierte Inhalt vonWie rufe ich ein Pixel-Array von einem Go „image.Image' für OpenGL ES 2.0 ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn