| ホーム >> | UNIX >> | imagemagick |
ImageMagickは画像処理のためのソフトウェアの集まりです。
Mac OS XならMacPorts,WindowsならCygwinを使うと簡単にインストールできます.
ImageMagickは後に述べるコマンドライン上で使う方法以外に、グラフィカルなインターフェイスを使ってに利用することが出来ます。 起動するためには,コマンドラインからdisplayコマンドを実行します.
$ display
2つのウインドウが現れて一つは画像表示用、もう一つは操作用です. これ以降で説明するコマンドの意味が分かれば使い方はおおよそ分かると思います.
複数の画像をまとめて変換する場合などには,コマンドラインで操作した方が便利です. ここではコマンドラインからの操作について説明します.
まずは,主要なコマンドの一覧から.
| display | 画像の表示 |
| import | 任意のウインドウのイメージを保存する |
| convert | 画像サイズ、画像フォーマットの変換 |
| mogrify | 画像サイズ、画像フォーマットの変換(複数ファイル可) |
| montage | 複数の画像を並べて一つの画像にする |
| animate | アニメーション表示する |
| identify | 画像の情報を表示する |
例えば画像 test.gif を表示するには
$ display test.gifとします.画像表示後は,グラフィカルに操作します.
表示されているウインドウを画像ファイルにします. スクリーンキャプチャの一種です. まずファイル名を指定して実行します.
$ import test.gif画像フォーマットはファイルの拡張子で自動的に判断されます. importを実行するとディスプレイに十字のカーソルが現れるのでダンプしたいウインドウをクリックします。
ウインドウの枠(フレーム)まで取り込みたいときは、
$ import -frame test.gif画面全体を取り込みたい時には、
$ import -window root test.gif画像を白黒にしたければ,
$ import -monochrome root test.gifのようにオプションを付けます.
その他のオプションは
$ man importで確認できます.
画像のフォーマットを変換することができます. 例えば EPSフォーマットの画像をPNGフォーマットに変換するには、
$ convert test.eps test.pngとします. 画像フォーマットは拡張子から自動的に判定されます.
geometryオプションを使います.
$ convert -geometry 300x200 test.png test_s.pngこれで任意の大きさのファイル test.png を300x200 のサイズに変換して test_s.png に出力します. EPSファイルを convert -geometry を使って変換するとビットマップになってしまうので注意しましょう.
画像サイズにビックリマーク!をつけると元の画像の縦横比を無視してそのサイズに変換します. つまり、
$ convert -geometry 500x100! test.png test_s.pngとすると横に長くのびた画像に変換されます.
EPSファイル(ベクトルデータ)をビットマップ画像ファイルに変換する時には、どれくらいの解像度にするのかの指定が必要になります.画像の密度は-density オプションで指定します. デフォルトは 72x72 になっています.密度は1平方インチ当たりのドット数です.
$ convert -density 200x200
例えば複数のPNGフォーマットの画像ファイル fig01.png, fig02.png, fig03.png, ..., fig30.png があったとします. これらをまとめてGIFアニメーションにするには、
$ convert -delay 30 fig*.png anime.gifとします. これで番号順に並んだアニメーションGIFが作られます.
画像を2つを繋げて一つにすることができます. 垂直方向につなげる時には、
$ convert -append fig01.gif fig02.gif fig03.gif水平方向に繋げる場合は "+append" を用います.
例えばPDFファイルをGIFファイルにする場合に、アンチエイリアスをかけないようにするには -filter Point オプションを付けます.
$ convert -filter Point some.pdf some.gif
スキャナ等で読み取った連番ファイル名のTIFF画像からPDFファイルを作るには、
$ convert *.tif all.pdfとします. 画像の圧縮形式をオプションで指定することもできます.
圧縮形式がLZWなら-compress LZW,ZIPなら-compress ZIP,CCITT Group 4 Fax 形式の場合には -compress Group4とします.
-cropオプションを用いると,画像の一部を切り取ることができます.
$ convert -crop <width>x<height>+<x_offset>+<y_offset> original.tif cropped.tif
mogrifyコマンドで画像のフォーマットや大きさをまとめて変換することができます. フォーマット変換なら、元のファイルの拡張子だけ変換して出力します. convertコマンドは,出力ファイルの拡張子を見て変換するフォーマットを判断しますが,mogrifyは-formatオプションで指定する必要があります. その代わり,複数のファイルを指定したフォーマットにまとめて変換することができます.
例えば test01.png, test02.png, test03.png, ..., test99.png という99個のPNGフォーマットの画像ファイルをまとめて GIFファイルに変換するには、
$ mogrify -format gif test*.pngとします.
サイズ変換は
$ mogrify -geometry 300x200 test*.pngとします. この場合,変換後のファイルは元のファイルに上書きされます. convert の場合と同じようにビックリマーク "-geometry 300x200!" も使うことができます.
その他、画像の回転などもできます.詳細は,man mogrify を参照してください.
2つの画像を繋げるには convert -append コマンドを使った方が便利ですが, 細かい指定をするにはmontageコマンドが便利.
例えば2つの画像を上下にくっつけることを考えます. 2つの画像を test1.gif と test2.gif だとします. この2つの画像のサイズは同じだとします. まず始めに identify コマンドを用いて画像のサイズを調べます.
$ identify test1.gif
test1.gif GIF 720x504+0+0 PseudoClass 64c 8-bit 5.1k 0.020u 0:01
画像のサイズは 720x504 だと分かります. この2つの画像をサイズを変えずに縦に並べて一つの画像にするには、
$ montage -tile 1x2 -geometry 720x504 test1.gif test2.gif test3.gifとする。 "-tile 1x2" は2つの画像を縦に並べることを表します. 横に並べるなら 2x1 とします. "-geometry 720x504" は一つの画像のサイズをあらわしています. もし test1.gif がこのサイズより小さければ縮小されます. 指定したサイズの方が大きければ拡大されます. 2つの画像を指定したサイズに変換後に上下に合成された画像が test3.gif になります. つまり test3.gif のサイズは 720x1008 になります.
複数の画像 test01.png, test02.png, ... test05.png を3秒おきに切り替えて順に表示するには,
$ animate -delay 300 test0[1-5].pngとします.
画像の情報を表示します,
$ identify test.eps
test.eps PS 720x504+0+0 DirectClass 8-bit 1.0m 0.020u 0:01