最近はJPEG XL(JXL)、もしくはWebpのような新しい優秀なフォーマットがある。
JPEGやPNGファイルを変換すればサイズを減らせるかも…?と思って試してみた。
変換ツールにはffmpegを使用。
ffmpeg -i input.png -distance 0.0 output.jxl
JXLでは-distance 0.0でロスレス圧縮指定。pngならサイズを小さくできたけど、元ファイルがjpgだと、減らないどころか逆に大きくなってしまった(細かく試してないので不明)
ffmpeg -i input.png -lossless 1 output.webp
webpの場合は-lossless 1でロスレス圧縮を指定。結果のファイルサイズはJXLより若干大きくなったが、誤差範囲かも。
ffmpeg -i input.jpg output.jxl
JXLはパラメータを指定しない場合、デフォルトでは非可逆圧縮になる。元がjpgだと、これでもサイズは小さくならなかった…
ffmpeg -i input.jpg output.webp
Webpも、デフォルトでは非可逆圧縮をする。これは結構小さくなった。非可逆圧縮ではWebpが優秀かも?
結論
ちなみに、webpは16-bit画像に対応していないという問題があるらしいです。WebP Lossless はちゃんと Lossless してます #WebP - Qiita
という訳で、
がいいかもしれません。
(もっとパラメーターをいじれば違う結果が出るかも)