首頁 > 後端開發 > Golang > 如何從 OpenGL ES 2.0 的 Go `image.Image` 中檢索像素數組?

如何從 OpenGL ES 2.0 的 Go `image.Image` 中檢索像素數組?

Susan Sarandon
發布: 2024-12-31 20:26:11
原創
732 人瀏覽過

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 中使用,可以使用以下步驟:

    定義自訂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. 根據需要使用像素傳遞給使用像素2D 方法。

以上是如何從 OpenGL ES 2.0 的 Go `image.Image` 中檢索像素數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板