首页 > 后端开发 > Golang > 如何从 OpenGL ES 2.0 的 Go `image.Image` 中检索像素数组?

如何从 OpenGL ES 2.0 的 Go `image.Image` 中检索像素数组?

Susan Sarandon
发布: 2024-12-31 20:26:11
原创
740 人浏览过

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

从 Go Image.Image 检索像素数组

在 Go 中,image.Image 接口表示包含像素数据的图像。要通过 texImage2D 方法从图像中获取像素数组以在 OpenGL ES 2.0 中使用,可以使用以下步骤:

  1. 定义自定义 Pixel 结构体来表示各个像素:
type Pixel struct {
    R int
    G int
    B int
    A int
}
登录后复制
  1. 创建一个函数 rgbaToPixel,将 RGBA 值转换为像素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. 编写一个函数 getPixels,从图像中提取像素数组。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
}
登录后复制
  1. Load图像并调用 getPixels 获取像素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. 根据需要使用像素传递给 texImage2D 方法。

以上是如何从 OpenGL ES 2.0 的 Go `image.Image` 中检索像素数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板