Home > Backend Development > Golang > How to Retrieve a Pixel Array from a Go `image.Image` for OpenGL ES 2.0?

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

Susan Sarandon
Release: 2024-12-31 20:26:11
Original
731 people have browsed it

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

Pixel Array Retrieval from Go Image.Image

In Go, the image.Image interface represents an image containing pixel data. To obtain a pixel array from an image.Image for use in OpenGL ES 2.0 via the texImage2D method, you can use the following steps:

  1. Define a custom Pixel struct to represent individual pixels:
type Pixel struct {
    R int
    G int
    B int
    A int
}
Copy after login
  1. Create a function, rgbaToPixel, to convert RGBA values to a 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)}
}
Copy after login
  1. Write a function, getPixels, to extract the pixel array from the 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
}
Copy after login
  1. Load an image and call getPixels to obtain the 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)
}
Copy after login
  1. Use pixels to pass to the texImage2D method as needed.

The above is the detailed content of How to Retrieve a Pixel Array from a Go `image.Image` for OpenGL ES 2.0?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template