今日の一言
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)
[TrackBack URL: http://akihiro-i.net/~akihiro-i/diary/tb.rb/20091020]