ホームページ > バックエンド開発 > 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 で使用する image.Image からピクセル配列を取得するには、次の手順を使用できます:

  1. 個々のピクセルを表すカスタム Pixel 構造体を定義します:
type Pixel struct {
    R int
    G int
    B int
    A int
}
ログイン後にコピー
  1. RGBA 値を変換する関数 rgbaToPixel を作成します。ピクセル構造体:
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 を記述します。画像:
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. 画像をロードし、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート