[go] 이미지 병합
이미지 병합은 golang에서 일반적으로 수행되는 작업 중 하나입니다. 이미지 병합을 할 때는 이미지 처리 라이브러리를 사용하여 두 개 이상의 이미지를 하나로 합칠 수 있습니다.
이미지를 불러오기
먼저 이미지를 불러오기 위해 image
라이브러리를 사용할 수 있습니다. 이미지를 불러오는 데에는 image.Decode
함수를 사용하여 이미지 파일을 읽을 수 있습니다.
package main
import (
"image"
"os"
_ "image/jpeg"
)
func main() {
file, err := os.Open("image.jpg")
if err != nil {
panic(err)
}
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
panic(err)
}
// 이미지 처리 작업 수행
}
이미지 병합하기
이미지를 병합하는 데에는 image/draw
라이브러리를 사용할 수 있습니다. 아래 예제 코드는 두 개의 이미지를 가로로 병합하는 방법을 보여줍니다.
package main
import (
"image"
"os"
_ "image/jpeg"
"image/draw"
)
func main() {
file1, err := os.Open("image1.jpg")
if err != nil {
panic(err)
}
defer file1.Close()
img1, _, err := image.Decode(file1)
if err != nil {
panic(err)
}
file2, err := os.Open("image2.jpg")
if err != nil {
panic(err)
}
defer file2.Close()
img2, _, err := image.Decode(file2)
if err != nil {
panic(err)
}
// 이미지1과 이미지2를 가로로 합치기
result := image.NewRGBA(image.Rect(0, 0, img1.Bounds().Dx()+img2.Bounds().Dx(), img1.Bounds().Dy()))
draw.Draw(result, result.Bounds(), img1, image.Point{0, 0}, draw.Src)
draw.Draw(result, result.Bounds(), img2, image.Point{img1.Bounds().Dx(), 0}, draw.Over)
out, err := os.Create("merged.jpg")
if err != nil {
panic(err)
}
defer out.Close()
// 결과 이미지를 파일로 저장
jpeg.Encode(out, result, nil)
}
마치며
Golang을 사용하여 이미지를 병합하는 것은 간단합니다. image
및 image/draw
라이브러리를 활용하여 다양한 이미지 처리 작업을 수행할 수 있습니다.