Image::Magick で文字の縁をよしなに描く
Image::Magick を選んだ理由
最初は、Imager を使ってモックも作ってたのでImagerを使いたかった。 縦書きのモジュールもあるので今回のやりたい事がほぼほぼできてた。
ただ、デザイナーさんから
文字に縁をつけて!!
って言われた。 これが Imager では結構きつかった。 縁になる文字のフォントサイズを大きくしたりしてみたけど、結構限界があった。
周りに色々質問してみたら、
Image::Magick だったらデフォルトで縁つけれるよ!
って言われたので Image::Magick を使うことにした。
Image::Magick で文字に縁をつける方法
普通だったらこんな感じで文字に縁がつく。
my $img = Image::Magick->new(); $img->Read("{file/path/name}"); $img->Annotate( font => 'font/path', text => 'sample', pointsize => 80, x => 10, y => 100, fill => 'blue', #縁の中の色 stroke => 'white', #縁の色 ); $img->Write('save/file/path');
ただ、これだと描画される縁が結構細い。 今回は、太い縁が描画したかったので色々やってみた。
strokewith
っていう縁の太さを指定できるオプションがあるのでやってみた。
my $img = Image::Magick->new(); $img->Read("{file/path/name}"); $img->Annotate( font => 'font/path', text => 'sample', pointsize => 80, x => 10, y => 100, fill => 'blue', stroke => 'white', strokewidth => 5, #縁の太さ ); $img->Write('save/file/path');
Image::Magick の仕様上縁が内側の太くなっていく。
試行錯誤の結果、下記の方法が一番綺麗になった。
my $img = Image::Magick->new(); $img->Read("{file/path/name}"); $img->Annotate( font => 'font/path', text => 'sample', pointsize => 80, x => 10, y => 100, fill => 'blue', stroke => 'white', strokewidth => 5, ); $img->Annotate( font => 'font/path', text => 'sample', pointsize => 80, x => 10, y => 100, fill => 'blue', ); $img->Write('save/file/path');
こうやるといい感じに縁が描画される。 縁の太さは1回目の描画の strokewidth で調節すればいい。
そんな感じ。
Markdown書式でソースコードきれいに貼りたいんだけどどうしたらいいかな...
``` perl
...
```
みたいな感じで バッククォーテーション 言語名でハイライトしてくれるみたい! ( ^ิ౪^ิ){ やったね!