>백엔드 개발 >Golang >Go에서 어떻게 이미지를 결합하고 회전할 수 있나요?

Go에서 어떻게 이미지를 결합하고 회전할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-30 11:07:10976검색

How Can I Combine and Rotate Images in Go?

Go를 사용한 회전을 통한 이미지 조작

문제

다음 시나리오를 고려하십시오.

  • 배경 이미지(bi )
  • 이미지1 (i1)
  • Image2 (i2)

i1과 i2를 특정 각도에서 bi 위에 배치하여 최종 이미지를 만드는 것이 목표입니다. i1 및 i2의 좌표는 회전 각도와 함께 제공됩니다. i1과 i2는 부분적으로 겹칠 수 있지만 z-index는 어떤 이미지가 전경에 표시되어야 하는지를 결정합니다.

이 작업은 Golang에서 이 기능을 구현하는 것입니다.

해결책

Go 이미지 패키지는 "Go의 이미지 그리기"에 설명된 대로 이미지 조작 기능을 제공합니다. (http://golang.org/doc/articles/image_draw.html).

이미지를 회전과 결합하려면 Graphics-go라는 보조 패키지를 권장합니다. 다음은 회전이 포함된 두 이미지의 조합을 보여주는 샘플 Go 프로그램입니다.

package main

import (
    "fmt"
    "os"
    "image/draw"
    "image"
    "image/jpeg"
    "code.google.com/p/graphics-go/graphics"
)

func main() {
    fImg1, _ := os.Open("arrow1.jpg")
    defer fImg1.Close()
    img1, _, _ := image.Decode(fImg1)

    fImg2, _ := os.Open("arrow2.jpg")
    defer fImg2.Close()
    img2, _, _ := image.Decode(fImg2)

    m := image.NewRGBA(image.Rect(0, 0, 800, 600))
    draw.Draw(m, m.Bounds(), img1, image.Point{0,0}, draw.Src)
    //draw.Draw(m, m.Bounds(), img2, image.Point{-200,-200}, draw.Src)
    graphics.Rotate(m, img2, &graphics.RotateOptions{3.5})

    toimg, _ := os.Create("new.jpg")
    defer toimg.Close()

    jpeg.Encode(toimg, m, &jpeg.Options{jpeg.DefaultQuality})
}

이 예에서는:

  • 두 이미지, "arrow1.jpg" 및 "arrow2.jpg "가 메모리에 로드됩니다.
  • 원하는 출력으로 새 RGBA 이미지 "m"이 생성됩니다.
  • 첫 번째 이미지 "img1"은 원점에서 "m"에 그려집니다.
  • 두 번째 이미지 "img2"는 회전하여 "m"에 그려집니다. 특정 각도 및 오프셋.
    결합된 결과 이미지는 "new.jpg"로 저장됩니다.

graphic-go 패키지는 설치 및 설정이 필요할 수 있는 외부 라이브러리에 의존합니다. 자세한 내용은 해당 설명서를 참조하세요.

위 내용은 Go에서 어떻게 이미지를 결합하고 회전할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.