LinuxZaurus
■ImageMagickでコマンドから画像処理

コマンドラインから結構色々な処理が行える画像処理コマンドの集合体、ImageMagickをリナザウ向けにコンパイルしてくれた人がいます。ありがとうございます。で、早速色々と試してみました。

まず導入方法はこちらからダウンロードしたipk.binファイルから.binを削除してipkファイルにし、インストールします。この際本体にしかインストールできないのと、ファイルサイズが4〜5M程度あることに気をつけてください。

あとはターミナルを起動して色々とコマンドを叩くだけです。

とりあえず試してみたのは以下のコマンドですが、これで全部試しきれているわけではないと思います。

/usr/bin/convert
/usr/bin/identify
/usr/bin/mogrify
/usr/bin/montage

例えば

/usr/bin/composite

はちょっと使い方が色々と面倒そうだったので今回は試していません。
また、試したコマンドも色々とオプション指定が出来るようですが、その中でも多分一部しか試せていません。
大体こんな感じ、と思ってください。

今回実際に変換に使用したファイルは以下の2つです。(クリックで元のサイズのファイルが開きます)

pic0025.jpg

pic0026.jpg

convert

画像ファイルの変換を行うコマンドです。
非常に多くのオプションをつけて実行することができます。

基本のコマンドは

convert オプション 読み込みファイル名 書き出しファイル名

となります。なお、一度に1つのファイルしか扱えません。

-geometry

サイズの変換を行います。

convert -geometry 200x135 pic0025.jpg pic25.jpg
convert -geometry 200x135 pic0026.jpg pic26.jpg

pic25.jpg

pic26.jpg


後の画像加工にはこの2ファイルを利用することにします。

-append,+append

縦横同じサイズのファイルを結合します。
-appendで縦、+appendで横に結合します。

convert -append pic25.jpg pic26.jpg con_append.jpg

-average

2つの画像を混ぜ合わせます。

convert -average pic25.jpg pic26.jpg average.jpg

-border ?1x?2

縁をつけます。-border ?1x?2の?1で左右の縁、?2で上下の縁の太さを決めます。
また、-bordercolorで縁の色を決めます。

convert -border 5x5 -bordercolor red pic25.jpg border.jpg

-contrast ?

コントラストを強調します。
が、いまいち見分けが付きません(汗)

convert -contrast pic25.jpg contrast.jpg

convert -contrast 100 pic25.jpg contrast100.jpg

-edge ?

エッジを強調します。?の適正地は3-30ぐらいだそうです。

convert -edge 3 pic25.jpg edge.jpg

-emboss ?

エンボス処理を施します。?にはとりあえず3を指定してみました。

convert -emboss 3 pic25.jpg emboss.jpg

-monochrome

モノクロ処理を施します。

convert -monochrome pic25.jpg monochro.jpg

-negate

ネガのような加工を施します。

convert -negate pic25.jpg negate.jpg

-raise ?1x?2

縁の立体化処理を行います。?1で左右、?2で上下の幅を設定します。

convert -raise 5x5 pic25.jpg raise.jpg

roll ?1?2

画像をロール処理します。?1で左から右、?2で上から下への移動距離を指定します。
数値には+か-をつけて明確化したほうが良いでしょう。

convert -roll +30+30 pic25.jpg roll.jpg

-rotate ?

画像を回転させます。+は時計回りに、-は反時計回りに回転させます。

convert -rotate +30 pic25.jpg rotate.jpg

-spread ?

拡散させます。?の値は1で以下の程度。

convert -spread 1 pic25.jpg spread.jpg

5にするとこれぐらい拡散します。

-swirl ?

うずまき処理を行います。300でこんな感じ。

convert -swirl 300 pic25.jpg swirl300.jpg

-wave ?1x?2

波形処理を施します。?1で振幅、?2で波長を指定します。

convert -wave 20x40 pic25.jpg wave20_40.jpg

 

montage

複数のファイルをまとめてサムネイルファイルを作成します。

montage pic25.jpg pic26.jpg montage.jpg

とすると

こんな感じでサムネイルファイルが出来ます。
が、同時にこんなエラーも吐かれます。

gs: not found
gs: not found
montage: Postscript delegate failed.

意味わかりませんが出来てるから良いです(汗)

identify -verbose

ファイルの情報を表示します。画像サイズや使用している色情報などを詳しく見れます。

gifの場合は使っている色について全部表示されるみたいです。

identify -verbose pic25.gif

とすると以下のように表示されます。

Image: pic25.gif
Format: GIF (CompuServe graphics interchange format)
Geometry: 200x133
Class: PseudoClass
Type: palette
Depth: 8 bits-per-pixel component
Colors: 128
0: ( 46, 38, 26) #2E261A
1: ( 40, 41, 41) #282929
2: ( 45, 50, 52) #2D3234
3: ( 52, 43, 37) #342B25
4: ( 56, 52, 42) #38342A
5: ( 55, 57, 58) #37393A
(略)
126: ( 0, 0, 0) #000000
127: ( 0, 0, 0) #000000
Filesize: 26.7k
Interlace: None
Background Color: #E1DEE1
Border Color: #DFDFDF
Matte Color: #BDBDBD
Page geometry: 200x133+0+0
Dispose: Undefined
Compression: LZW
signature: f3ecacf05d0e2794990f109263b5437fb8a2a458077a07cb15aacb83531f7ba9
Tainted: False
User Time: 0.040u
Elapsed Time: 0:01

mogrify

一度にひとつ以上の画像を加工できます。

-format ?

で出力ファイルのフォーマットを指定

-geometoric ?1x?2

で画像のサイズを指定。?1が横幅で?2が縦幅。 

-colors ?

で使用する最大の色数を指定可能。

mogrify -format jpeg -geometry 200x125 pic0025.jpg pic0026.jpg

とすると

のようにファイルサイズの変換処理を一括で行ってくれます。
ただし、出力ファイル名を指定することが出来ないので、同じ画像フォーマットでサイズ変換だけを行う場合などには既存のファイルに上書きされてしまいますので注意しましょう。(jpgの場合はjpegで出力が可能なので、上書きを免れることが出来ます)

ただし、ファイルサイズに比例して処理には非常に時間がかかるようになります。

画像フォーマットの変換

画像フォーマットの変換はconvertコマンドかmogrifyコマンドで行う事が出来ます。
複数ファイルの変換はmogrift、単体ではconvertという感じでしょうか。
ただしmogriftで単体のファイルを変換することも可能です。

mogrify -format gif pic25.jpg

または

convert pic25.jpg pic25.gif

といった感じで変換します。
変換したgifファイルはこんな感じになります。

ちなみに-colorsオプションで最大色数を指定することも出来ます。

convert -colors 100 pic25.jpg pic25.gif

とすると100色だけ使ったgifファイルを作成します。少しだけファイルサイズが小さくなっています。

ちなみにmogriftyの場合は

mogrify -format gif *.jpg

などとすることで、一気に全jpgファイルをgifに変換することも出来ますが恐ろしく時間がかかる場合もあります。

動画gifの作り方

動画gifの作成をする場合、まずpic1.gif、pic2.gifという具合に連番になっているgif画像を用意します。

次にconvertコマンドで

convert pic*.gif anime.gif

という感じで入力します。するとpic1.gif、pic2.gifという具合に連番になっているgifファイルを連続で動かす動画gifファイルanime.gifが出力されます。

しかしこの場合、アニメーションする回数は1回で、それも一瞬で終わってしまいます。

-loop 0

とすることでループするアニメーションgifを作れます。(0より大きい数字を指定することでアニメーションの回数を指定できます)また

-delay ???

とすることでアニメーションするタイミングをミリ秒単位で遅く出来ます。例えば

convert -loop 0 -delay 300 pic*.gif anime.gif

とすることで、3秒ごとにずっとアニメーションを続けるanime.gifが出力されます。


(アニメーションgifに対応したブラウザでしか見れません)

gifファイル圧縮のライセンスについて

通常gifファイルを扱う場合、LZW圧縮という方法を用います。しかしこのLZW圧縮を使用するとUNISYSのライセンス料が発生します。
しかしImageMagickのgif圧縮はこのLZW圧縮を用いていないので、ライセンス料はかかりません。しかしそのためgifファイルのサイズが非常に大きくなってしまいます。

ソース元

 

戻る