🌊
【Go】imagick を使用して画像にテキストを書き込む
imagick とは
Go で ImageMagick の機能が使えるようになるライブラリです。
Go Imagick is a Go bind to ImageMagick's MagickWand C API.
準備
ImageMagick をインストール
imagick
は ImageMagick の MagickWand C API の Go バインドです。
そのため、別途 ImageMagick のインストールが必要です。
OS によってインストール方法は異なりますが、検索すれば詳しい記事が大量にあるためここでは割愛します。
imagick をインストール
$ go get gopkg.in/gographics/imagick.v2/imagick
サンプルコード
今回は以下の画像にテキストを書き込んでみる。
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
出力された画像が以下。
out.jpeg
その他サンプルコード
以下に公式のサンプルコードがたくさんあります。
imagick/examples at master · gographics/imagick
参考
Discussion