SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【画像処理】画像のサイズ変換ってImageMagickのconvertコマンドぐらいしかないの?

問題

jpeg画像のサイズを変更する処理をおこないたい。ImageMagickのconvertコマンドでいいの?

答え

方法はいろいろある。こだわってみるとおもしろい。

1、jpeg画像を100枚用意する

2、ImageMagick の convertコマンドで画像を縮小する処理を100回おこなうスクリプトを用意する

convert -quality 80 -thumbnail 50% org/1.jpg conv/1.jpg
convert -quality 80 -thumbnail 50% org/2.jpg conv/2.jpg
convert -quality 80 -thumbnail 50% org/3.jpg conv/3.jpg
...
...

3、Netpbm の pnmscaleコマンドで画像を縮小する処理を100回おこなうスクリプトを用意する

djpeg org/1.jpg | pnmscale 0.5 | cjpeg -quality 80 > jpeg/1.jpg
djpeg org/2.jpg | pnmscale 0.5 | cjpeg -quality 80 > jpeg/2.jpg
djpeg org/3.jpg | pnmscale 0.5 | cjpeg -quality 80 > jpeg/3.jpg
...
...

4、交互に実行してみる

# time ./convert.sh
real    0m19.071s
user    0m16.580s
sys     0m2.454s
# time ./convert.sh
real    0m19.079s
user    0m16.569s
sys     0m2.470s
# time ./pnmscale.sh
real    0m12.451s
user    0m21.274s
sys     0m0.904s
# time ./pnmscale.sh
real    0m12.409s
user    0m21.201s
sys     0m0.913s
# time ./convert.sh
real    0m19.136s
user    0m16.616s
sys     0m2.437s
# time ./pnmscale.sh
real    0m12.421s
user    0m21.225s
sys     0m0.906s

結果

JPEG画像100枚の縮小が、convertコマンドで19秒、pnmscaleコマンドで12秒。

高機能なconvertコマンドよりも、単機能のコマンドを組み合わせた処理の方が速かった。

(サイズ変更に使用されているアルゴリズムが何なのかなどを特に考慮していない。出来上がった画像は目視ではそれほど代わらない品質だった。)

関連するメモ

コメント