PNG を最適化

Google PageSpeed Insights で画像ファイルはもっと小さくなるよって注意されるので OptiPNG を試してみた。

CentOS で EPEL にパッケージがあったのでインストールはこれだけ。

$ sudo yum -y install optipng

とりあえず実行してみる

$ optipng
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

Synopsis:
    optipng [options] files ...
Files:
    Image files of type: PNG, BMP, GIF, PNM or TIFF
Basic options:
    -?, -h, -help	show the extended help
    -o 		optimization level (0-7)		default 2
    -v			verbose mode / show copyright and version info
Examples:
    optipng file.png			(default speed)
    optipng -o5 file.png		(moderately slow)
    optipng -o7 file.png		(very slow)
Type "optipng -h" for extended help.

Help を確認

$ optipng -h
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

Synopsis:
    optipng [options] files ...
Files:
    Image files of type: PNG, BMP, GIF, PNM or TIFF
Basic options:
    -?, -h, -help	show this help
    -o 		optimization level (0-7)		default 2
    -v			verbose mode / show copyright and version info
General options:
    -fix		enable error recovery
    -force		enforce writing of a new output file
    -keep		keep a backup of the modified files
    -preserve		preserve file attributes if possible
    -quiet		quiet mode
    -simulate		simulation mode
    -snip		cut one image out of multi-image or animation files
    -out 		write output file to 
    -dir 	write output file(s) to 
    -log 		log messages to 
    --			stop option switch parsing
Optimization options:
    -f  	PNG delta filters (0-5)			default 0,5
    -i  		PNG interlace type (0-1)		default 
    -zc 	zlib compression levels (1-9)		default 9
    -zm 	zlib memory levels (1-9)		default 8
    -zs 	zlib compression strategies (0-3)	default 0-3
    -zw 	zlib window size (32k,16k,8k,4k,2k,1k,512,256)
    -full		produce a full report on IDAT (might reduce speed)
    -nb			no bit depth reduction
    -nc			no color type reduction
    -np			no palette reduction
    -nx			no reductions
    -nz			no IDAT recoding
Optimization details:
    The optimization level presets
        -o0  <=>  -o1 -nx -nz
        -o1  <=>  [use the libpng heuristics]	(1 trial)
        -o2  <=>  -zc9 -zm8 -zs0-3 -f0,5	(8 trials)
        -o3  <=>  -zc9 -zm8-9 -zs0-3 -f0,5	(16 trials)
        -o4  <=>  -zc9 -zm8 -zs0-3 -f0-5	(24 trials)
        -o5  <=>  -zc9 -zm8-9 -zs0-3 -f0-5	(48 trials)
        -o6  <=>  -zc1-9 -zm8 -zs0-3 -f0-5	(120 trials)
        -o7  <=>  -zc1-9 -zm8-9 -zs0-3 -f0-5	(240 trials)
    The libpng heuristics
        -o1  <=>  -zc9 -zm8 -zs0 -f0		(if PLTE is present)
        -o1  <=>  -zc9 -zm8 -zs1 -f5		(if PLTE is not present)
    The most exhaustive search (not generally recommended)
      [no preset] -zc1-9 -zm1-9 -zs0-3 -f0-5	(1080 trials)
Examples:
    optipng file.png				(default speed)
    optipng -o5 file.png			(moderately slow)
    optipng -o7 file.png			(very slow)
    optipng -i1 -o7 -v -full -sim experiment.png

なんかいろいろオプションはあるみたいだけど、とりあえず optimization level は max で全部(数は少ない)最適化してみる

$ find . -type f -name '*.png' -print0 | xargs -0 optipng -o7

very slow って書いてあるだけあったかなり時間がかかりますね。対した画像じゃないのに。
試したのはさくらのVPS 2Gプランのサーバーです。 /proc/cpuinfo 見ると Xeon E5645 とありますね。そんなに悪くない。どれだけ Over commit されてるかわかりませんけど。

うちの KVM は Guest からだと QEMU Virtual CPU って表示されるんだけどなぁって思ってググったら -cpu host なんていうオプションがあったんですね。試してみよう。
サーバ屋日記: kvmによる仮想マシン”-cpu host”オプションで性能向上する場合がある

/etc/libvirt/qemu/xxx.xml に次の1行を追加すれば良いようだ(2行に分割されるけど)。

  

コメント