ImageMagickでのPNGファイル生成の高速化

 
こんにちは岡野です。
弊社サービスではImageMagickでPNGファイルを生成することが多いのですが、高速化するための設定を調査したので共有します。
 

環境

ImageMagick 6.9.12-84 Q8
Ubuntu 22.04
 

調査内容

PNGファイル出力時の圧縮設定を変更した際の出力時間を調査しました。なおこの解説記事を参考にしています。

圧縮方法を設定する-quality引数を0~99で変えながら実行した際の時間を数回計測しました。

使用したコマンドは
$ convert logo: -resize 1024×1024! logo.png
$ rm log ; for q in `seq 0 1 99` ; do /usr/bin/time -f %e:$q -a -o log convert logo.png -quality $q png32:logo-$q.png ; done
$ sort log

で、結果は以下です。
11,12,13,14,21,22,23,24,31,32,33,34は0.05秒
41,42,43,44,51,52,54は0.06秒
以降、省略

ファイルサイズは以下の通りでした。
$ ls -l logo-[123][1234].png logo-75.png
384337  3月 24 17:31 logo-11.png
384337  3月 24 17:31 logo-12.png
384337  3月 24 17:31 logo-13.png
384337  3月 24 17:31 logo-14.png
378112  3月 24 17:31 logo-21.png
378112  3月 24 17:31 logo-22.png
378112  3月 24 17:31 logo-23.png
378112  3月 24 17:31 logo-24.png
374669  3月 24 17:31 logo-31.png
374669  3月 24 17:31 logo-32.png
374669  3月 24 17:31 logo-33.png
374669  3月 24 17:31 logo-34.png
295753  3月 24 21:00 logo-75.png (デフォルト設定)

11,12,13,14,21,22,23,24,31,32,33,34のいずれかの設定が良さそうでした。ただしpng:compression-filterの仕様を見ると画像内容によって上記の結果も結構変わりそうです。
 

結論

今後も検討を続けますが一旦は-quality 11を使用することにしました。ただしファイルサイズがデフォルト設定より増えるため(295,753->384,337)、ユーザアクセス内容によっては弊害も大きく注意が必要です。