画像ファイルのサイズ縮小
JPEGとPNGの内容を変更させずにサイズの縮小を試みてみた。
JPEGに関しては"jpegtran"でハフマン符号の最適化を試みる。PNGに関しては"optipng"でPNGのパラメータをほぼ総当りで試した後、zopflipngでIDATエントリの中身を再圧縮する。
こんな感じ
#!/bin/bash IN=$1 EXT=${IN##*.} case "${EXT}" in [Jj][Pp][Gg] | [Jj][Pp][Ee][Gg] ) if [ ! -f "${IN%.opt.jpg}.opt.jpg" ]; then echo "${IN}" jpegtran -copy all -optimize -progressive -outfile "${IN%.*}.opt.jpg" "${IN}" rm "${IN}" fi;; [Pp][Nn][Gg] ) if [ ! -f "${IN%.opt.png}.opt.png" ]; then echo "${IN}" unset tmpfile trap "[[ $tmpfile ]] && rm -f $tmpfile" 1 2 3 15 tmpfile=$(mktemp) optipng -quiet -fix -preserve -out ${tmpfile} -o 6 -i 0 "${IN}" zopflipng -m ${tmpfile} "${IN%.*}.opt.png" rm "${IN}" ${tmpfile} fi;; esac
とりあえずCPU負荷すごい。PNGの圧縮パラメータ複雑すぎ。