"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 이미지를 연결하는 방법은 무엇입니까?

Go에서 이미지를 연결하는 방법은 무엇입니까?

2024-11-09에 게시됨
검색:243

How to Concatenate Images in Go?

Go에서 이미지 연결: 종합 가이드

Go에서는 강력한 이미지 라이브러리 덕분에 이미지 조작이 매우 쉽습니다. 그러나 여러 이미지를 하나의 큰 캔버스로 병합하려는 경우 상황이 혼란스러울 수 있습니다. 다음은 전문가처럼 이 작업을 처리하기 위한 단계별 가이드입니다.

이미지 로드

시작하려면 연결하려는 이미지를 로드하세요. 이를 수행하는 코드 조각은 다음과 같습니다.

// Open the first image
imgFile1, err := os.Open("test1.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img1, _, err := image.Decode(imgFile1)
if err != nil {
    fmt.Println(err)
}

// Open the second image
imgFile2, err := os.Open("test2.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img2, _, err := image.Decode(imgFile2)
if err != nil {
    fmt.Println(err)
}

새 이미지 만들기

다음으로 로드된 두 이미지를 모두 수용할 수 있는 넓은 새 이미지를 만들어 보겠습니다. 두 이미지의 너비를 추가하여 이 새 캔버스의 크기를 결정합니다.

r := image.Rectangle{image.Point{0, 0}, img1.Bounds().Dx()   img2.Bounds().Dx(), img1.Bounds().Dy()}
rgba := image.NewRGBA(r)

이미지 그리기

이제 재미있는 부분이 나옵니다. 이 새 캔버스 내에서 이미지를 조합하는 것입니다. 두 번째 이미지를 배치할 위치를 결정한 다음 두 이미지를 캔버스에 그립니다.

// Starting point of the second image (bottom left)
sp2 := image.Point{img1.Bounds().Dx(), 0}
// Rectangle for the second image
r2 := image.Rectangle{sp2, sp2.Add(img2.Bounds().Size())}

// Draw the first image
draw.Draw(rgba, img1.Bounds(), img1, image.Point{0, 0}, draw.Src)
// Draw the second image
draw.Draw(rgba, r2, img2, image.Point{0, 0}, draw.Src)

결과 저장

마지막으로 이 연결된 내용을 불멸화해 보겠습니다. 새 이미지 파일로 저장하여 걸작을 만드세요:

out, err := os.Create("./output.jpg")
if err != nil {
    fmt.Println(err)
}

var opt jpeg.Options
opt.Quality = 80

jpeg.Encode(out, rgba, &opt)

그렇습니다! 여러 이미지를 응집력 있는 전체로 성공적으로 병합했습니다. 이미지 조작의 세계를 정복하세요.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3