画像処理ツール ImageMagick の便利なコマンド逆引きまとめ

ImageMagickでやりたい事からコマンドオプションを調べるための逆引き辞典的なまとめ。
項目は随時追加予定です(2013-11-21更新)。

詳細については ImageMagick公式サイトのUsageOptions を参照すると幸せになれます。

基本

画像形式を相互変換する(GIFからJPEG, JPEGからPNGなど)

convert input.gif output.jpg

convertコマンドは拡張子から画像形式を自動判別して変換することができます。上記の例では GIF から JPEGへ変換しています。
拡張子がないファイル名を扱うときなど、拡張子に依存せずに変換したい場合はプレフィクスをつけることで任意の画像形式として取り扱うことも可能です。


<h1>JPEG 形式の input.dat ファイルを PNG形式のimage0001に変換する。</h1>

convert jpeg:input.dat png:image0001

画像の読み込み、保存に標準入力、標準出力を使う

cat input.jpg | convert - -resize 50x50 - > output.jpg
cat input.jpg | convert jpg:- -resize 50x50 png:- > output.png

標準入力、標準出力を扱いたい場合、ファイルの代わりにハイフンを指定します。
入力値でプレフィクスによる画像形式指定を省略した場合は自動判別されます。
同様に出力値で画像形式指定を省略した場合、入力値と同じ形式で出力されます。

SVGからPNG(JPEG,GIF)へ変換する。

convert input.svg -resize 1600x1600 output.png

SVGはPNGやJPEG,GIFなど他の画像と同様に入力画像として扱えます。
jpegやgifにする場合は、output.pngの拡張子を変えるだけでOKです。

色の変換

カラー写真をグレースケール画像、セピア画像に変換する

グレースケール(モノクロ写真)への変換。

convert input.jpg -type GrayScale output.jpg

セピア調画像への変換。

convert input.jpg -sepia-tone '80%' output.jpg

グレースケールの画像を単色のアルファ画像に変換する。

convert  from.png -background '#99FFFF' -channel A -combine to.png

黒い部分を透明、白部分を不透明として、-backgroundで指定した色(例では#99FFFF)で塗りつぶしたアルファ画像に変換します。

画像の色を反転する。

convert from.png -negate to.png to.png



画像操作

画像の向きを上下反転・左右反転する


<h1>上下反転</h1>

convert input.png -flip output.png

<h1>左右反転</h1>

convert input.png -flop output.png

画像の一部を切り抜く

-crop geometry

使用例:座標(10, 20)から30×40ピクセル切り抜く

convert input.png -crop '30x40+10+20' output.png

サイズ指定必須、座標は省略可能です。

画像をリサイズする

-resize geometry

使用例: アスペクト比を維持しつつ100×100に収まるのサイズにリサイズする。

convert input.png -resize '100x100' output.png

サイズ指定必須。サイズには -resize ‘50%’ のようにパーセント指定が可能です。
デフォルトでアスペクト比を維持したままリサイズしますが、-resize ‘100×100!’のようにサイズ指定にエクスクラメーション記号(‘!’)を指定した場合はアスペクト比を無視したリサイズを行います。

横幅だけに合わせてリサイズ、または縦幅だけに合わせてリサイズを行いたい場合、-resize ’50x’ や -resize ‘x50’のように不要なサイズ指定を省略することで一方だけを基準としたリサイズが実現できます。

画像を回転する

-rotate degree{<}{>}

例: 画像を90度回転する

convert input.png -rotate 90 output.png

回転角を度数で指定します。
90の倍数以外の場合、回転後の画像が収まるサイズにキャンバスが拡張され、余白部分は背景色で塗りつぶされます。
-rotate ’90<‘のように不等号を指定すると、元が縦長(‘<‘)、または横長(‘>’)の時だけ回転処理を行うことが可能です。

画像をトリミングする

-trim +repage

使用例:

convert input.png -trim +repage output.png

画像の上下左右の余白部分をトリミングします。
-trimだけでも画像はトリミングされますが、キャンバスサイズはトリミングされないため、+repageと組み合わせて使いましょう。

トリミングを行う対象は四隅の色と一致する色です。
近似色までトリミングしたい場合は -fuzz distance{%} オプションで近似色の許容範囲を事前に設定して下さい。

convert input.png -fuzz 10 -trim +repage output.png