Obtention d'un tableau de pixels à partir d'un objet image Golang
Pour obtenir un tableau de pixels sous la forme d'un tableau d'octets, l'approche suivante peut être utilisé.
Tout d'abord, la bibliothèque d'images fournit la méthode img.At(x, y).RGBA() pour récupérer les valeurs RGBA pour un objet spécifique. pixel aux coordonnées (x, y) dans l’image. Pour obtenir la représentation 8 bits de ces valeurs, chaque composant doit être divisé par 255.
Pour faciliter ce processus, un tableau bidimensionnel de pixels peut être créé comme suit :
package main import ( "fmt" "image" "image/png" "os" "io" "net/http" ) func main() { // Register the PNG format (can be extended to other formats) 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 / 255), int(g / 255), int(b / 255), int(a / 255)} } type Pixel struct { R int G int B int A int }
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!