>백엔드 개발 >Golang >OpenGL ES 2.0용 Go `image.Image`에서 픽셀 배열을 검색하는 방법은 무엇입니까?

OpenGL ES 2.0용 Go `image.Image`에서 픽셀 배열을 검색하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-31 20:26:11748검색

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. 개별 픽셀을 나타내는 사용자 정의 픽셀 구조체를 정의합니다.
type Pixel struct {
    R int
    G int
    B int
    A int
}
  1. RGBA 값을 픽셀로 변환하는 rgbaToPixel 함수를 만듭니다. 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 함수를 작성합니다. 이미지:
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를 호출하여 픽셀을 얻습니다. 배열:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.