Maison > développement back-end > Golang > Comment récupérer un tableau de pixels à partir d'une image.Image Go pour OpenGL ES 2.0 ?

Comment récupérer un tableau de pixels à partir d'une image.Image Go pour OpenGL ES 2.0 ?

Susan Sarandon
Libérer: 2024-12-31 20:26:11
original
740 Les gens l'ont consulté

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

Récupération de tableau de pixels à partir de Go Image.Image

Dans Go, l'interface image.Image représente une image contenant des données de pixels. Pour obtenir un tableau de pixels à partir d'une image.Image à utiliser dans OpenGL ES 2.0 via la méthode texImage2D, vous pouvez suivre les étapes suivantes :

  1. Définissez une structure Pixel personnalisée pour représenter des pixels individuels :
type Pixel struct {
    R int
    G int
    B int
    A int
}
Copier après la connexion
  1. Créez une fonction, rgbaToPixel, pour convertir les valeurs RGBA en pixel 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)}
}
Copier après la connexion
  1. Écrivez une fonction, getPixels, pour extraire le tableau de pixels de l'image.Image :
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
}
Copier après la connexion
  1. Charger une image et appelez getPixels pour obtenir le pixel 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)
}
Copier après la connexion
  1. Utilisez des pixels pour passer à la méthode texImage2D si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal