[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을 사용하여 이미지를 병합하는 것은 간단합니다. imageimage/draw 라이브러리를 활용하여 다양한 이미지 처리 작업을 수행할 수 있습니다.