[go] 이미지 변환
이미지 변환은 컴퓨터 비전 및 이미지 처리에서 중요한 작업 중 하나입니다. 고 언어를 사용하여 이미지를 변환하고 처리하는 방법에 대해 알아보겠습니다.
이미지 로딩
먼저, 이미지를 로딩하는 방법부터 살펴봅시다. image
패키지는 이미지를 로딩하고 저장하는 데 필요한 함수와 구조체를 제공합니다. 아래는 이미지를 로드하는 간단한 예제입니다.
package main
import (
"fmt"
"image"
_ "image/png"
"os"
)
func main() {
file, err := os.Open("input.png")
if err != nil {
fmt.Println("이미지를 열 수 없습니다.", err)
return
}
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
fmt.Println("이미지를 디코딩할 수 없습니다.", err)
return
}
fmt.Println("이미지 로딩 완료:", img.Bounds())
}
위 코드는 image/png
패키지를 사용하여 PNG 형식의 이미지를 로드합니다. JPEG나 GIF 형식의 이미지도 동일한 방식으로 로딩할 수 있습니다.
이미지 변환
고 언어는 이미지 변환을 위한 여러 함수를 제공합니다. 이미지를 크기 조정하거나 회전시키는 등의 작업을 아래와 같이 수행할 수 있습니다.
package main
import (
"fmt"
"image"
_ "image/jpeg"
"image/png"
"os"
)
func main() {
file, err := os.Open("input.jpg")
if err != nil {
fmt.Println("이미지를 열 수 없습니다.", err)
return
}
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
fmt.Println("이미지를 디코딩할 수 없습니다.", err)
return
}
newImg := resizeImage(img, 300, 200)
outFile, err := os.Create("output.png")
if err != nil {
fmt.Println("출력 파일을 생성할 수 없습니다.", err)
return
}
defer outFile.Close()
err = png.Encode(outFile, newImg)
if err != nil {
fmt.Println("이미지를 저장할 수 없습니다.", err)
return
}
fmt.Println("이미지 변환 완료")
}
func resizeImage(img image.Image, width, height int) image.Image {
newImg := image.NewRGBA(image.Rect(0, 0, width, height))
draw.CatmullRom.Scale(newImg, newImg.Bounds(), img, img.Bounds(), draw.Src, nil)
return newImg
}
위 코드에서 resizeImage
함수를 사용하여 이미지의 크기를 조정하고, png.Encode
함수를 사용하여 이미지를 PNG 형식으로 저장합니다.
결론
고 언어를 사용하여 이미지를 로딩하고 변환하는 방법에 대해 간략하게 알아보았습니다. 이미지 처리에는 다양한 기술과 라이브러리가 있으며, 고 언어는 이미지 처리를 위한 다양한 패키지를 제공하고 있습니다. 고언어의 이미지 처리 기능을 활용하여 다양한 이미지 변환 및 처리 작업을 수행할 수 있습니다.
참고 자료
위 예제 코드 및 자세한 정보는 Go 이미지 처리 공식 문서에서 확인할 수 있습니다.