🖼️

JPEG XLでJPEGを圧縮する

2024/03/11に公開

JPEG XLJPEGPNGなどの従来の形式よりも高い圧縮率を実現しており、非可逆圧縮と可逆圧縮、アニメーション、アルファチャンネル、HDR、広色域などのモダンな機能を提供していますが、これらは部分的も含めてAVIFWebPでも対応しています。

JPEG XLのこれらの形式にはない特徴として、従来のJPEGを一切の画質の劣化なくファイルサイズを約20%小さくできるというのがあるので、今回はこれを試してみようと思います。

可逆的なJPEGトランスコーディング

ウィキメディア・コモンズのページにある以下のJPEG画像をJPEG XLに変換してみます。

赤毛の柴犬
赤毛の柴犬(707,853 B)

# WebP
cwebp -lossless Shiba_inu_taiki.jpg -o Shiba_inu_taiki.webp

# AVIF
avifenc -l Shiba_inu_taiki.jpg Shiba_inu_taiki.avif

# JPEG XL
cjxl Shiba_inu_taiki.jpg Shiba_inu_taiki.jxl
コマンド バージョン
cwebp 1.3.2
avifenc[1] 1.0.4
cjxl 0.10.1

結果

形式 ファイルサイズ(B)
JPEG 707,853
WebP 2,425,950
AVIF 4,750,246
JPEG XL 576,128

圧縮比の比較

WebPとAVIFに可逆圧縮したときはファイルサイズが大きくなり、JPEG XLだけが小さくなるという結果になりました。
また、実際に約20%ファイルサイズが小さくなりました。

復元

圧縮した画像からはビット単位で完全に同一のJPEG画像に復元できます。

# 復元
djxl Shiba_inu_taiki.jxl reconstructed.jpg

# ビット単位で比較
cmp Shiba_inu_taiki.jpg reconstructed.jpg

JPEG XLにはExifなどのメタデータを保存できるので、圧縮の際にこれを含めている場合にはこれを含めて完全に復元されます。

identify -verbose reconstructed.jpg

終わりに

現状では対応しているのがSafariだけとウェブブラウザの対応はあまり進んでいません。

https://caniuse.com/jpegxl

しかし、対応しているグラフィックソフトウェアは増えてきているので[2]、ブラウザ以外の環境では積極的に利用できそうです。
また、復元は低コストで行えるので現状でもJPEG画像のサーバー内部での保存形式として良さそうです。

参考文献

脚注
  1. libaomはバージョン3.8.1を使用。 ↩︎

  2. https://github.com/libjxl/libjxl/blob/v0.10.2/doc/software_support.md ↩︎

GitHubで編集を提案

Discussion