> 백엔드 개발 > Golang > `texImage2D`에 대해 Go의 이미지에서 픽셀 배열을 추출하는 방법은 무엇입니까?

`texImage2D`에 대해 Go의 이미지에서 픽셀 배열을 추출하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-06 18:45:15
원래의
996명이 탐색했습니다.

How to Extract a Pixel Array from an Image in Go for `texImage2D`?

Go의 이미지에서 픽셀 배열 검색

문제:

Go의 이미지에서 픽셀 배열 추출 gl.Context의 texImage2D 메서드에 전달하려면 바이트 배열 형식이 필요합니다. 원하는 픽셀 배열은 왼쪽에서 오른쪽, 위에서 아래로 순차적으로 배열된 RGBA 값으로 구성됩니다.

해결책:

픽셀 배열을 얻으려면 다음과 같이 하세요. 다음 단계를 수행할 수 있습니다.

  1. 이미지:
    os.File 또는 http.Request.Body와 같은 io.Reader에서 image.Decode(a)를 사용하여 이미지를 로드합니다.
  2. 개별 픽셀 가져오기:
    img.At(x, y).RGBA()를 사용하여 각각에 대한 RGBA 값을 검색합니다. pixel.
  3. 픽셀 배열 구축:
    픽셀 배열을 나타내는 2차원 배열 픽셀을 구성합니다. 이미지의 각 픽셀을 반복하여 RGBA 값을 해당 행에 픽셀 단위로 추가합니다.
  4. 8비트 표현으로 변환:
    RGBA 값은 32비트 정수이므로 , texImage2D에 대한 8비트 표현을 얻으려면 257로 나눕니다.
package main

import (
    "fmt"
    "image"
    "image/png"
    "os"
    "io"
    "net/http"
)

func main() {
    // Register other formats as needed
    image.RegisterFormat("png", "png", png.Decode, png.DecodeConfig)

    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)
    }

    fmt.Println(pixels)
}

func getPixels(file io.Reader) ([][]Pixel, error) {
    img, _, err := image.Decode(file)

    if err != nil {
        return nil, err
    }

    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
}

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)}
}

type Pixel struct {
    R int
    G int
    B int
    A int
}
로그인 후 복사

이러한 단계를 수행하면 Go의 texImage2D 메서드에 사용할 이미지의 픽셀 배열을 효과적으로 얻을 수 있습니다.

위 내용은 `texImage2D`에 대해 Go의 이미지에서 픽셀 배열을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿