2014年11月17日月曜日

【Linux】大量の画像をコマンド一発でトリミングする.

画像をトリミングするとき,私は GIMP などの GUI ソフトで対応していますが,複数のファイルを扱う場合にすべて GIMP で開くのは大変なので,コマンドで処理するのが便利です.

使用するのは,お馴染みの convert コマンド.


$ convert -crop 256x128+64+32 input.png output.png

上の例では,左から 64px,上から 32pxの位置から 256 x 128px の画像をトリミングします.

また入力ファイルと出力ファイルに同じファイル名を指定した場合,上書きされます.

大量に扱う場合は for と合わせて,


$for i in *.png
>do
>    convert -crop 256x128+64+32 ${i} ${i%.png}_2.png
>done

とすれば,**.png ファイルが全て 256 x 128px でトリミングされて **_2.png として保存されます.



この方法,どんなときに活躍するかと言えば,ずばりスマホでスクリーンショットを撮ったときです.

(余談ですが,私はスクショを撮る度に Dropbox にアップロードするように設定しています.)


左の画像(トリミング前)は,上下にそれぞれ無駄なものがが表示されていますが,


$ convert -crop 1080x1701+0+75 input.png output.png

としてやれば,必要かつ十分な情報量の右の画像(トリミング後)が得られます.




ちなみに,identify コマンドでそれぞれの画像の情報を見ると,output.png にはしっかりとトリミングした形跡が残っています.

input.png

PNG 1080x1920 1080x1920+0+0 8-bit DirectClass 152KB 0.000u 0:00.000

output.png

PNG 1080x1701 1080x1920+0+75 8-bit DirectClass 133KB 0.000u 0:00.000


大量のスクリーンショットを撮って,ブログの記事にする場合などに重宝すると思います.

0 件のコメント:

コメントを投稿