[Go] imagick을 사용하여 이미지에 텍스트 쓰기

8074 단어 Gotech

imagick 소개


Go에서 ImageMagick 기능을 사용할 수 있는 라이브러리
Go Imagick is a Go bind to ImageMagick's MagickWand C API.
imagick/README.md at master · gographics/imagick

차리다


ImageMagick 설치

imagick는 ImageMagick의 MagickWand C API의 Go 바인딩입니다.
따라서 ImageMagick을 별도로 설치해야 합니다.
운영체제에 따라 설치 방법도 다르지만 검색하면 상세한 글이 많이 나오기 때문에 생략합니다.

imagick 설치


$ go get gopkg.in/gographics/imagick.v2/imagick

샘플 코드


이번에는 아래의 그림에 텍스트를 써 보세요.
before
piyo.jpeg
main.go
package main

import (
	"log"

	"gopkg.in/gographics/imagick.v2/imagick"
)

func main() {
	// imagick を初期化
	imagick.Initialize()
	defer imagick.Terminate()

	// MagickWand, DrawingWand, PixelWand を作成
	mw := imagick.NewMagickWand()
	dw := imagick.NewDrawingWand()
	pw := imagick.NewPixelWand()

	// 画像を読み込み
	if err := mw.ReadImage("./piyo.jpeg"); err != nil {
		log.Fatal(err)
	}

	// フォントを設定
	if err := dw.SetFont("/Library/Fonts/Arial.ttf"); err != nil {
		log.Fatal(err)
	}

	// フォントサイズを設定
	dw.SetFontSize(24)

	// 書き込みの色を設定
	if ok := pw.SetColor("#ff0000"); !ok {
		log.Fatal("invalid color string")
	}
	dw.SetFillColor(pw)

	// テキストを書き込み
	// 引数は X 座標, Y 座標, テキスト の順
	dw.Annotation(100, 100, "Hello World")

	// 画像に反映
	if err := mw.DrawImage(dw); err != nil {
		log.Fatal(err)
	}

	// 書き出し
	if err := mw.WriteImage("out.jpeg"); err != nil {
		log.Fatal(err)
	}
}
$ go run main.go
출력된 이미지는 다음과 같습니다.
after
out.jpeg

기타 샘플 코드


아래에는 많은 공식 샘플 코드가 있다.
imagick/examples at master · gographics/imagick

참고 자료


https://github.com/gographics/imagick
https://pkg.go.dev/github.com/gographics/imagick/imagick
https://blog.awm.jp/2017/01/02/goimagick/

좋은 웹페이지 즐겨찾기