コマンドラインで画像処理 - ImageMagick -

更新:2004-4-25

ImageMagick、 このソフトの特徴は、Display、Import等の各独立したコマンドで構成されているところにある。コマンドを使っての画像の編集作業である。以下に使用コマンド一群をあげる。ImageMagick-5.7.7-10を使用。

display 画像の表示加工 Import 画像の取り込み、スクリーンショット
animate 画像の連続表示・スライドショー montage 画像の一覧表示・サムネイル作成
convert 画像のフォーマット変換・Gifアニメ mogrify 画像を一括変換
identify 画像情報の表示 composite 画像の合成
compare 元画像と変換後の画像を比較 conjure Magick Scripting Language(MSL) -開発中-
ただし、compareコマンドは、ImageMagickのインストール後見つからない。

ImageMagickは89種以上の画像フォーマットに対応していることをうたっているが、現在インストールされているImageMagickがそれらすべてに対応しているわけでない。自分のImageMagickが現在どのフォーマットおよびプロトコルをサポートしているかは、

	$identify -list format
自分が望むフォーマットが表示されなければ、さらに対応させるプログラムやライブラリをインストールする必要がある。ImageMagickで利用できるフォーマットおよびそれに必要なプログラム等については、Supported Image Formatsに記載されている。

また画像に文字を埋め込みたい場合もあるが、現在ImageMagickで使用できるフォントを調べるには、

	$identify -list type
使用フォントは、/usr/lib/ImageMagick-バージョン/type-ghostscript.mgkに記載されている。

各コマンドについての解説を得るには、man コマンドの後に各コマンド名を付けて実行する。

	$man display
各コマンドの使用法、使えるオプション等を知るには、各コマンドに「help」オプションを付ける。
	$display -help

画像の表示 - display -

画像を表示させるのは、「display」コマンドを利用する。単にdisplayだと、ImageMagickのGUIツールが起動する。

	$display test.jpg

サイズ指定とか色深度も指定できる。モノクロだと、「monochrome」オプションである。displayは現在利用しているパソコンの画面モードを検知して、現在の表示モードが表示させる画像の色数に十分ならばそのまま表示する。表示させる画像の色数が画面の色数よりも少なければ、画面モードに合わせて減色して表示する。

	$display -size 320x240 -colors 16 test.jpg

現在のディレクトリにある画像を一覧表示するには、以下のように実行する。起動されたウィンドウ内にすべての画像が画像情報(ファイル名、サイズ、容量)とともに表示される。「*.jpg」とか「*.png」、「*.gif」とすれば、各種フォーマットごとに表示してくれる。

	$display 'vid:*'

インターネット上の画像を表示させることもできる。URLがわかっていれば、それを指定する。

	$display http://www.xxxx.xx.jp/xxxx/xxx.jpg

画面のキャプチャ - import -

スクリーンショットを撮るには、「import」コマンドを使用する。import コマンドを実行すると、マウスカーソルが 「+」マークになり、撮りたい画面をクリックすると開始と終了のビープ音が2回鳴り,画像ファイルが作成される。撮りたい範囲をマウスカーソルでドラグすれば、囲まれた範囲を撮る。

	$import test.jpg
ファイル名を指定しないと、magik.miffが現在のディレクトリに作成される。ImageMagickの独自のフォーマットがmiffである。

特定のウィンドウのスクリーンショットを撮る場合は、「window」オプションにwindowのタイトル名またはウィンドウIDを付ける。なお、windowのタイトル名に「root」を指定すると、全画面のスクリーンショットを撮る。

	$import -window kterm test.jpg
	$import -window 0x2200000d test.jpg

ウィンドウIDとは、X-Windowで開かれているウィンドウに割り当てられているユニークな番号のことである。このウィンドウIDは、xwininfoコマンドを使用して調べることができる。xwininfoを実行すると、マウスポインタが「+」の形に変わる。ウィンドウIDを調べたいウィンドウをクリックすると、そのウィンドウの情報が表示される。その先頭の行に、例えば「xwininfo: Window id: 0x2200000d "kterm"」と記載されている。その中の番号がウィンドウIDである。その次がウィンドウ名になる。

画像の情報を取得 - identify -

identifyコマンドで画像の情報を得ることができる。「display -verbose」でも可。各種コマンドにverboseオプションを付けると、必ず画像情報を表示する。

	$identify test.jpg
	test.jpg JPEG 400x300+0+0 DirectClass 8-bit 69.2kb 0.020u 0:01
「verbose」オプションでさらに詳細な情報を得ることができる。
	$identify -verbose test.jpg

TIFF 画像の情報を得る専用コマンド tiffinfo や PNG 画像の情報を得る専用コマンド pnginfo(pngtools) がある。

画像処理 - convert -

画像フォーマットの変換

画像のフォーマットを換えるのは簡単だ。単に拡張子を指定するだけでよい。JPEG 画像を GIF 画像に変換する。convertコマンド実行時は、必ず変換されるファイル名を指定することに注意。

	$convert test.jpg test-convert.gif
Linuxでは拡張子は必要ないのだが(ヘッダー内容を見てファイルフォーマットを判断している)、こういう時は拡張子も便利といえば便利だ。また、大文字小文字も識別するので、jpg と JPGとは違うファイルになる点も注意。

大量の画像ファイルを一度に変換し、さらに番号を付加して整理するにも非常に便利である。

	$convert folder1/* folder2/gazou-%02d.jpg
いまfolder1に100枚の画像ファイルがあり、それをfolder2にgazou-00からgazou99のファイル名でJPEGに変換する。「%d」 は十進数を意味し、、「0」から始まり、「2」は表示される値が使用する総桁数を意味する。

convertコマンドでは、PDFファイルから画像ファイルを抽出することができ、逆に画像ファイルをPDFファイルに変換することもできる。

画像の回転・反転

「rotate」オプションを使用することで、画像の回転を行うことができる。

	$convert -rotate 90 test.jpg test-rotate.jpg
正の引数は画像を時計回りで回転させる。逆回りに回転させるには、負の数を使用する。

画像の上下反転は、「flip」、画像の左右反転は、「flop」である。

	$convert -flip test.jpg test-flip.jpg
	$convert -flop test.jpg test-flop.jpg

画像をモノクロに変換

カラー画像をモノクロ画像に変換、

	$convert -monochrome test.jpg test-mono.jpg

画像サイズの変換

画像のサイズを拡大・縮小するには、「size」オプションまたは「resize」オプションにサイズ幅(横x高さ)を指定する。ピクセルやパーセンテージで指定。

	$convert -size 100x100 test.jpg test-size.jpg
	$convert -resize 60%x60% test.jpg test-resize.jpg

画像を縁どる (枠、装飾枠、エッジ)

画像に縁どりの枠を付けるには、「border」オプションに枠の幅を指定し、「bordercolor」オプションで色を指定する。色名(例えばblue)および16進数(例えば"#0000FF")等での指定が可。

	$convert -border 10x10 -bordercolor blue test.jpg test-border.jpg
	$convert -border 10x10 -bordercolor "#0000FF" test.jpg test-border.jpg

画像に装飾枠を付けるには、「frame」オプションで装飾枠の幅にベベル(傾斜)の外側幅と内側幅を指定する。「mattecolor」オプションで色を指定する。

	$convert -frame 15x15+4+4 -mattecolor blue test.jpg test-frame.jpg

画像の周囲にエッジをつける、つまり隆起させて立体的にするには、「raise」オプションを使用する。

	$convert -raise 10x10 test.jpg test-raise.jpg

文字を入れる

フォントの指定は、フォント名やフォントのパスを指定する。「draw」オプションで描画する内容を指定する。以下の例では、テキストで書き出し位置が(200,20)から始まり、二重引用符で囲まれた文字列を描く。描画コマンド内に二重引用符が必要となるので、単一引用符が使用される。また、二重引用符内に二重引用符を使用することはできない。

	$convert -font /usr/X11R6/lib/X11/fonts/TrueType/kochi-gothic.tty \
	  -fill blue -pointsize 18 -draw 'text 200,80 "presented by NASA"' \
	  test.jpg test-text.jpg

-- 続く ----------
[参考サイト]
inserted by FC2 system