Golang 이미지 객체에서 픽셀 배열 얻기
바이트 배열 형태의 픽셀 배열을 얻으려면 다음 접근 방식을 사용할 수 있습니다.
먼저 이미지 라이브러리는 img.At(x, y).RGBA() 메서드를 사용하여 이미지의 좌표(x, y)에서 특정 픽셀에 대한 RGBA 값을 검색합니다. 이러한 값의 8비트 표현을 얻으려면 각 구성 요소를 255로 나누어야 합니다.
이 프로세스를 용이하게 하려면 다음과 같이 2차원 픽셀 배열을 생성할 수 있습니다.
package main import ( "fmt" "image" "image/png" "os" "io" "net/http" ) func main() { // Register the PNG format (can be extended to other formats) 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 / 255), int(g / 255), int(b / 255), int(a / 255)} } type Pixel struct { R int G int B int A int }
위 내용은 Golang 이미지 객체에서 픽셀 배열을 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!