チップス
ImageMagickで画像処理 文字を生成して背景画像と重ねる
画像の処理をサーバサイドで一時ファイルを作らずオンザフライでする事になったので、画像処理ソフト ImageMagick について調べてみました。
ImageMagickというライブラリをご存知でしょうか?GDの機能強化版と言えば、理解が早いかもしれません。
ImageMagickはhttp://www.imagemagick.org/にて配布されている、画像を編集するためのツールソフトウェアです。GPL互換性のあるライセンスで提供されており、LinuxやWindowsなどの多くのプラットフォームで利用することができます。
文字から画像を生成する。testchar.png
testchar画像の大きさを変更する。
convert -geometry 170 testchar.png wk.png
test001画像とwk.pngを重ねる。
convert test001.png wk.png -gravity center -composite wk2.png
ImageMagick は 下記のソフトウェアで構成されています。
display | : | 各種イメージの表示,編集 |
import | : | 表示されているウインドウを各種イメージファイルにダンプ |
animate | : | 指定されたイメージのシーケンスをアニメーション化 |
montage | : | イメージをモンタージュ写真のように合成 |
convert | : | 入力されたイメージを指定された各種フォーマットに出力 |
mogrify | : | イメージの拡大・回転 |
identify | : | 指定されたイメージに関する情報を出力 |
ImageMagick Convert Command-line Tool
今回は
画像を拡大・縮小する
画像のフォーマットを変換する
2つの画像の合成を行う
画像を半透明にする(透過)
の機能を使う予定です。
参考URL
ImageMagickで半透明画像を作る
キャンバスのみ透過にしておいて、setFillColor で色指定して図形描画
ImageMagick でテキスト文字を画像に反映させる方法とバグ
スキャンした書籍や書類の余白をImageMagickで除去する
【ImageMagick】グラデーションのかかったテキストを描画する
convert に -define jpeg:size=... をつけると10倍早くなる。
convert -define jpeg:size=180x120 -resize 180x120 src.jpg dst.jpg
header("Content-type: image/png");
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "pragma: no-cache" );
header( "Cache-control: no-cache" );
// *********************************************************
// 透過背景のキャンバス
// *********************************************************
// キャンバス作成
$canvas = new Imagick();
$canvas->newImage(300, 300, "none");
// *********************************************************
// 四角形の描画
// *********************************************************
// 描画用オブジェクト
$draw = new ImagickDraw();
// 塗りつぶしに使用する色
$draw->setFillColor("#FFFFFF");
// 縁取りに使用する色
$draw->setStrokeColor( "#000000" );
// 線の幅
$draw->setStrokeWidth(4);
// 四角形
$draw->rectangle( 50, 50, 250, 250 );
// キャンバスに描画
$canvas->drawImage($draw);
// *********************************************************
// 文字列の描画
// *********************************************************
// 描画用オブジェクト
$draw2 = new ImagickDraw();
// フォント選択
$draw2->setFont('./ume-pgo4.ttf');
// フォントのサイズ
$draw2->setFontSize(40);
// 文字列描画( 改行コードを含む );
$draw2->annotation(90, 60, "日本語表示" );
// キャンバスに描画
$canvas->drawImage($draw2);
// *********************************************************
// 出力
// *********************************************************
// フォーマット
$canvas->setImageFormat('png');
// 出力
print $canvas;
?>