🔥 image 인터페이스

236자
3분

Go 언어의 image 패키지는 이미지 처리를 위한 강력한 도구를 제공합니다. 이 패키지는 이미지를 나타내는 Image 인터페이스를 정의하고 있죠.

Package image에서 Image 인터페이스를 다음과 같이 정의하고 있습니다:

package image
 
type Image interface {
    ColorModel() color.Model
    Bounds() Rectangle
    At(x, y int) color.Color
}
 
go

참고: Bounds 메서드의 Rectangle 반환 값은 실제로 image.Rectangle입니다. 이는 image 패키지 내부에서 선언되어 있기 때문이에요.

(자세한 내용은 공식 문서를 참조하세요.)

color.Colorcolor.Model 타입 역시 인터페이스이지만, 여기서는 미리 정의된 구현체인 color.RGBAcolor.RGBAModel을 사용할 거예요. 이러한 인터페이스와 타입은 image/color 패키지에 명시되어 있습니다.

이제 image 패키지를 사용하여 간단한 예제를 만들어 보겠습니다:

package main
 
import (
	"fmt"
	"image"
)
 
func main() {
	// image.Rect()를 사용하여 100x100 크기의 이미지 영역을 정의합니다.
	// 이 영역은 (0, 0)에서 시작하여 (100, 100)까지 확장됩니다.
	rect := image.Rect(0, 0, 100, 100)
 
	// image.NewRGBA()를 사용하여 RGBA 색상 모델을 가진 새 이미지를 생성합니다.
	// 생성된 이미지의 크기는 앞서 정의한 rect와 같습니다.
	m := image.NewRGBA(rect)
 
	// 이미지의 경계(Bounds)를 출력합니다.
	// 출력 결과: (0,0)-(100,100)
	fmt.Println(m.Bounds())
 
	// 이미지의 (0, 0) 위치에 있는 픽셀의 RGBA 값을 출력합니다.
	// 새로 생성된 이미지이므로, 모든 픽셀의 초기값은 (0, 0, 0, 0)입니다.
	fmt.Println(m.At(0, 0).RGBA())
}
 
go

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다:

(0,0)-(100,100)
0 0 0 0
text

이 예제에서는 image.Rect()를 사용하여 이미지의 경계를 정의하고, image.NewRGBA()를 통해 새로운 RGBA 이미지를 생성했어요. 그리고 Bounds() 메서드로 이미지의 경계를 출력하고, At() 메서드로 특정 위치의 픽셀 값을 확인했습니다.

이처럼 Go 언어의 image 패키지를 활용하면 이미지를 쉽게 다룰 수 있어요.