トップ «前の日記(2009/10/19(Mon)) 最新 次の日記(2009/10/25(Sun))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2009/10/20(Tue) 早急に研究テーマを明確にせねば・・・ [長年日記] 21:30現在 18℃

_ [Ubuntu][FC][Linux][雑記]convertコマンドについてもう少し詳しく

以前に画像のサイズを変更する方法でconvertコマンドを挙げたが、リサイズ以外にも便利な使い方があるので、もう少し詳しく述べる。

まず、前回も書いた内容。

画像のサイズを指定して変更。

 $ convert -resize 800x450 hogehoge.jpg hogehoge.new.jpg

画像のサイズを指定して変更。(縦横比無視)

 $ convert -resize 800x450! hogehoge.jpg hogehoge.new.jpg

画像のサイズを%で指定して変更。

 $ convert -resize 50% hogehoge.jpg hogehoge.new.jpg

画像のサイズを縦横比を壊す値で指定して変更。

 $ convert -resize 50%x25% hogehoge.jpg hogehoge.new.jpg

この例だと、幅が50%、高さが25%に変更される。

ちょっと便利なファイル名の指定方法

bashのブレース展開を使うと、ファイル名の指定が少しだけ簡単になる。

 $ convert -resize 800x450 hogehoge{,.new}.jpg

これは、

 $ convert -resize 800x450 hogehoge.jpg hogehoge.new.jpg

と同じ。

フォーマットの変換

一番重要な使い方。

前回これを紹介してなかったのがおかしい。対応形式についてはマニュアルを参照の事。

epsからjpgに変換。

 $ convert hogehoge.eps hogehoge.jpg

もしくは

 $ convert hogehoge{.eps,.jpg}

白黒画像に変換

 $ convert -type grayscale hogehoge{,.new}.jpg

2つの画像の合成

 $ convert -compose over hoge1.jpg hoge2.jpg comp_hoge.jpg

hoge1.jpgをhoge2.jpgの「上」に合成した画像comp_hoge.jpgが出力される。

overの部分を変えれば合成する場所は変えられる。

gifアニメーションを作成

 $ convert -delay 10 in*.gif out.gif

-delay xにより、1枚の画像を100分のx秒間だけ表示するように指定できる。

また、*指定することで、in1.gif,in2.gif・・・という感じに順に取り込むことが出来る。

が、このままだと一度だけ動いて止まってしまう。なので、以下の方法でループ回数を指定する。

 $ convert -loop 5 out.gif out2.gif

-loop xにより、x回だけループするようになる。なので、この例ではout.gifを5回ループさせて表示する画像out2.gifが出来上がる。

(iterationsに0を与えることで、永久ループも設定可能)

2つを合わせて指定するとこんな感じ。

 $ convert -loop 5 -delay 10 in*.gif out.gif

透過gifアニメーションを作る場合はdisposeオプションも指定する。

 $ convert -loop 5 -dispose background -delay 10 in*.gif out.gif

より詳しい使い方

マニュアル読むべし。(http://www.imagemagick.org/script/convert.php