Ubuntu Weekly Recipe

第102回 ImageMagickでコマンドラインから画像加工

この記事を読むのに必要な時間:およそ 3 分

今回は,コマンドラインから画像加工を行えるImageMagickを取り上げます。画像加工ならGIMPやF-Spotを使えばいいのに,⁠なぜコマンドラインから?⁠と思われるかもしれませんが,コマンドラインならではの利点もあります。

例えば,数百枚の画像に同じ処理を施す場合,GIMPで1枚1枚手作業で処理するのに比べて,コマンドラインやスクリプトから一括で処理した方が,時間も労力もかかりません。

ImageMagickは数多くの機能を備えていますが,その中からデジカメで撮影後の写真を加工する用途を中心に紹介していきます。

ImageMagickのインストール

インストールは,[アプリケーション]-[アクセサリ]-[端末]を開いて以下のコマンドを実行します。

$ sudo apt-get install imagemagick

ImageMagickのドキュメントをインストールする場合は,以下のコマンドも実行します。

$ sudo apt-get install imagemagick-doc

インストールしたドキュメントを閲覧するには,Firefoxのアドレス欄に以下を入力します。

file:///usr/share/doc/imagemagick-doc/index.html

ドキュメントを開いてみるとわかりますが,これはImageMagickのホームページとほぼ同一のものです。

ImageMagickの基本

ImageMagickでは,画像を変換する場合に「convert」「mogrify」というコマンドを用います。⁠mogrify」コマンドを使ってしまうと元画像を書き換えてしまうため,新たなファイルとして保存する「convert」コマンドを使うのがよいでしょう。

例として,カレントディレクトリ内に保存されている写真「P001.jpg」のJPEG圧縮率を90%に変更して「converted_P001.jpg」という名前で保存してみます。以下のコマンドを実行します。

$ convert P001.jpg -quality 90 converted_P001.jpg

ただし,このようにImageMagickを使うだけでは,GIMPで写真を開いて,ファイルの保存ダイアログで,圧縮率を指定するのと手間が変わりません図1)⁠

図1 GIMPの保存ダイアログでJPEGの品質を指定するところ

図1 GIMPの保存ダイアログでJPEGの品質を指定するところ

そこで,⁠xargs」というコマンドと組み合わせて使い,カレントディレクトリ内のJPEGファイルすべてに同じ処理を施してみます。以下のコマンドを実行します。

$ ls *.jpg | xargs -I{} convert {} -quality 90 -verbose converted_{}

このコマンドでは,lsコマンドでカレントディレクトリ内のJPEGファイルをリストアップし,その出力をxargsコマンドに渡します。xargsコマンドは,与えられたファイル名を{}の部分に代入して,JPEGファイルの数だけconvertコマンドを実行してくれます。

例えば,カレントディレクトリ内に「P001.jpg, P002.jpg, P003.jpg, ...」というファイルがあった場合は,変換後の画像を「converted_P001.jpg, converted_P002.jpg, converted_P003.jpg, ...」と保存してくれます。

なおここでは,処理状況を表示させるため「-verbose」オプションを追加しています。

輝度,彩度の変更

「-modulate」オプションを用いると,簡単に輝度と彩度が変更できます。ただし,この操作が行われるのはHSL色空間です。

-modulateオプションは3つの値を取り,⁠輝度(Lightness)」⁠彩度(Saturation)」⁠色相(Hue)」の順にパーセントの値で指定します。値が指定されない場合は100%が指定されたものと解釈されます。

輝度を110%,彩度を130%に上げる場合は,以下のように実行します。

$ convert P001.jpg -modulate 110,130 converted_P001.jpg

この操作は,元の画素の持つ値に対して,-modulateオプションで指定した値を掛ける動作をします。これは,GIMPメニューの[色]-[色相-彩度]図2とは全く異なる動作です。GIMPと似たような動作をさせる場合は,以下のように指定します。

$ convert P001.jpg -colorspace HSL \
-channel B -evaluate Add 10% \
-channel G -evaluate Add 30% \
-colorspace RGB converted_P001.jpg

このコマンドでは,まず画像をHSL色空間に分解し,チャンネルごとに値を加えています。そして最後にRGB色空間に戻して保存しています。

操作するチャンネルの指定方法ですが,ImageMagickではRGBの3文字しか使えません。HSL色空間ではHを操作したい場合はRを,Sの場合はGを,Lの場合はBを指定してください。

また,加える値をパーセントではなく直接指定する場合の値の範囲ですが,ImageMagickでは内部でチャンネルごとの値を16bitで持っているため,0から65535までです。

図2 GIMPの[色相-彩度]ツール

図2 GIMPの[色相-彩度]ツール

著者プロフィール

村田信人(むらたのぶと)

Ubuntu Japanese Teamメンバー。Ubuntuオフラインミーティングに参加するうちにUbuntu Japanese Teamの活動に興味を持ち,2009年8月に加入。

コメント

コメントの記入