理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> ImageMagick
このエントリーをはてなブックマークに追加

ImageMagickメモ

更新日:2010.2.22

ImageMagickは画像処理のためのソフトウェアの集まりです。

  1. インストール
  2. 対話的な使い方
  3. コマンド一覧
  4. display
  5. import
  6. convert
    1. フォーマット変換
    2. 画像サイズの変換
    3. 解像度の指定
    4. GIFアニメーション作成
    5. 画像の結合
    6. アンチエイリアスを切る
    7. 複数のTIFF画像からPDFファイルを作成
    8. 画像の一部切り取り
  7. mogrify
  8. montage
  9. animate
  10. identify

インストール

Mac OS XならMacPorts,WindowsならCygwinを使うと簡単にインストールできます.

対話的な使い方

ImageMagickは後に述べるコマンドライン上で使う方法以外に、グラフィカルなインターフェイスを使ってに利用することが出来ます。 起動するためには,コマンドラインからdisplayコマンドを実行します.

$ display

2つのウインドウが現れて一つは画像表示用、もう一つは操作用です.

コマンド一覧

複数の画像をまとめて変換する場合などには,コマンドラインで操作した方が便利です. ここではコマンドラインからの操作について説明します.

まずは,主要なコマンドの一覧から.

display 画像の表示
import 任意のウインドウのイメージを保存する
convert 画像サイズ、画像フォーマットの変換
mogrify 画像サイズ、画像フォーマットの変換(複数ファイル可)
montage 複数の画像を並べて一つの画像にする
animate アニメーション表示する
identify 画像の情報を表示する

display

例えば画像 test.gif を表示するには

$ display test.gif
とします.画像表示後は,グラフィカルに操作します.

import

表示されているウインドウを画像ファイルにします. スクリーンキャプチャの一種です. まずファイル名を指定して実行します.

$ import test.gif
画像フォーマットはファイルの拡張子で自動的に判断されます. importを実行するとディスプレイに十字のカーソルが現れるのでダンプしたいウインドウをクリックします。

ウインドウの枠(フレーム)まで取り込みたいときは、

$ import -frame test.gif
画面全体を取り込みたい時には、
$ import -window root test.gif
画像を白黒にしたければ,
$ import -monochrome root test.gif
のようにオプションを付けます.

その他のオプションは

$ man import
で確認できます.

convert

フォーマット変換

画像のフォーマットを変換することができます. 例えば 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

GIFアニメーション作成

例えば複数の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ファイルを作成

スキャナ等で読み取った連番ファイル名の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

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 を参照してください.

montage

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 になります.

animate

複数の画像 test01.png, test02.png, ... test05.png を3秒おきに切り替えて順に表示するには,

$ animate -delay 300 test0[1-5].png
とします.

identify

画像の情報を表示します,

$ identify test.eps
test.eps PS 720x504+0+0 DirectClass 8-bit 1.0m 0.020u 0:01