【画像処理】画像のサイズ変換って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コマンドよりも、単機能のコマンドを組み合わせた処理の方が速かった。
(サイズ変更に使用されているアルゴリズムが何なのかなどを特に考慮していない。出来上がった画像は目視ではそれほど代わらない品質だった。)
コメント