ImageMagick

画像のリサイズや合成等をサーバ上で行う場合はGDかこれが候補にあがる。
たいした事をしないのであればパフォーマンスでGD。GDの高機能版がImageMagickという感じのようで。
今回はImageMagickを利用する。

インストール

Ubuntuにインストールした。

sudo /usr/bin/apt-get install imagemagick
sudo /usr/bin/apt-get install graphicsmagick-imagemagick-compat
sudo /usr/bin/apt-get install php5-imagick

終了。
imagick.ini が作成されて、extension=imagick.soが既に記載されていた。

画像操作の前に

という選択肢からPHPからコマンドラインを利用することにする。そちらの方が楽でオプションの指定も簡単そうなので。。

基本コマンド

リサイズ(以下はpx単位で記載。%の指定も可能)
// 縦横比自動調整でリサイズ(横×縦=200x150)
// 200×146とかになったりする
convert input.jpg -resize 200x150 output.jpg
// 縦横比無視して強制リサイズ
// 絶対に200×150になる
convert input.jpg -resize 200x150! output.jpg
// 縦横どちらかを決定してリサイズする
// アスペクト比自動調整
convert input.jpg -resize 200x output.jpg  // 横を固定
convert input.jpg -resize x150 output.jpg  // 縦を固定
// 縮小だけして、拡大は無視する
// 指定サイズ以上の画像はリサイズされ、指定サイズ以下の画像はそのまま。
convert input.jpg -resize 200x150\> output.jpg
// リサイズ(縮小)によるぼやけ防止(-unsharpオプション)
// 画像を縮小した場合などは画像がぼやけてしまうので、シャープ処理が必要。
convert input.jpg -unsharp -resize 200x150 output.jpg

/*
 * 指定方法
 * -unsharp radius(x)sigma[+amount][+thresold]
 * radius   : ガウシアンでの範囲(default:0)
 * sigma    : ガウシアンの標準偏差(default:1.0)
 * amount   : オリジナルとぼやけたイメージの差分をパーセントで示す(default:1.0)
 * thresold : 量子レンジの分数として定義(default:0.05)
 */

フォーマット変換

convert input.jpg output.png

複数画像からPDFの作成

convert input*.jpg output.pdf

回転

// 右回転の数値指定なので、左回転時はマイナスを指定する
convert -rotate 90 input.jpg output.jpg

画像の切り抜き

convert -crop <width>x<height>+<x_offset>+<y_offset> input.png output.png
// 中央から指定サイズ切り抜くなら
convert -gravity center -crop 100x100+0+0 input.png output.png

GIFアニメーションの作成

convert -delay 30 input*.png output.gif

輝度・彩度・色相(-modulateオプション)

convert input.jpg -modulate 110,130 output.jpg

/*
 * 指定方法
 * -modulate brightness[,saturation,hue]
 * brightness : 輝度(default:100%)
 * saturation : 彩度(default:100%)
 * hue        : 色相(default:100%)
 */

そのほか

文字の合成などについてはそのうち追記しよう。