m_shige1979のささやかな抵抗と欲望の日々

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

go言語で画像を作成(編集)する【imagemagick】

ImageMagick

画像編集するライブラリで超優秀なやつ
文字列の設定なども可能
フォントは微妙

インストール(Mac

brew install ruby
brew install ImageMagick
brew install pkg-config
go get gopkg.in/gographics/imagick.v3/imagick

rubyは2.3以上
※imagickはimagemagickのインストールバージョンで切り替え

実装

sample2.go
package main

import (
    "gopkg.in/gographics/imagick.v3/imagick"
//    "fmt"
)

func main() {

    var err error

    imagick.Initialize()
    defer imagick.Terminate()
    mw := imagick.NewMagickWand()
    dw := imagick.NewDrawingWand()
    pw := imagick.NewPixelWand()
    defer mw.Destroy()

    // 短形を作成
    pw.SetColor("none")
    mw.NewImage(400, 300, pw)

    // フォント設定
    pw.SetColor("RGB(255, 0, 125)")
    dw.SetFillColor(pw)
    dw.SetFontSize(60)
    pw.SetColor("RGB(255, 0, 125)")
    dw.SetStrokeColor(pw)

    // テキスト設定
    dw.Annotation(25, 65, "Sample")

    // 短形の描画(塗りつぶしなし)
    pw.SetColor("RGB(100, 100, 100)")
    dw.SetStrokeColor(pw)
    dw.SetStrokeWidth(4)
    pw.SetColor("none")
    dw.SetFillColor(pw)
    dw.Rectangle(50, 150, 120, 250)
    dw.PushDrawingWand()

    // 描画
    mw.DrawImage(dw)

    // 合成用
    pw2 := imagick.NewPixelWand()
    mw2 := imagick.NewMagickWand()
    defer mw2.Destroy()
    pw2.SetColor("blue")
    mw2.NewImage(120, 100, pw2)
    // 指定の場所へ合成
    err = mw.CompositeImage(mw2, mw2.GetImageCompose(), true, 100, 100)
    if err != nil {
        panic(err)
    }

    // 出力フォーマット
    err = mw.SetFormat("png")
    if err != nil {
        panic(err)
    }

    // ファイルへ出力
    mw.WriteImage("text_shadow.png")
}

f:id:m_shige1979:20171029150935p:plain

所感

文字列を挿入できました(^^)
まあ、あまり画像を使うことはないですがとりあえず覚えておこうかと思います。