8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ロスレスで画像圧縮するベストな方法(2025)

8
Last updated at Posted at 2025-12-21

TL;DR

前回の 画像圧縮するベストな方法(2025)では、ロッシーな不可逆圧縮の方法の紹介をしました。

今回は、「ロスレス」。
つまり全く劣化しない可逆圧縮の方法を比較します。

結論は、Web配信(ブラウザ互換)を最優先するなら WebP(lossless)が現実解。
最高圧縮は JPEG XL だが、ブラウザ対応がまだ限定的。

ベンチマークの順序は下記になります。

JPEG-XL > WebP > PNG > AVIF

はじめに

ロッシーな不可逆圧縮は、ロゴやテキストを含む画像などの平坦な画像を圧縮すると、圧縮ノイズや色あいの劣化が目立ちます。

このような場合は、通常、ロスレス圧縮を使います。
代表的なロスレス圧縮フォーマットはpngです。
一切劣化しないため、非可逆圧縮と違って画質とサイズのトレードオフは考える必要がありません。

写真などの画像はロスレスではあまり小さくなりませんが、ロゴやパワポの画像、PCスクリーンショット画像などは、ロッシーな圧縮よりも小さくなることが多いです。

このロスレス圧縮を実装している画像フォーマットは沢山ありますが、

  • ロスレスとして設計した方法
  • ロッシーの副産物としてロスレスになった方法

の2系統があります。
前者は、最初からロスレス専用でアルゴリズムが設計されており、後者はロッシーな圧縮とほとんど同じフローでロスレス圧縮を実現します。

AVIFにはロスレス圧縮もありますが、ロスレス専用モードが特化型で作られているわけではないため、ロッシーな圧縮と違って性能は高くありません。

コマンドは下記になります。
JPEG XLはlosslessを明示的に指示しなくてもq=100でロスレスになります。
あと--allow_expert_optionsオプションでエフォート-e 11が解禁されます(デフォルトは10)

# AVIF
avifenc --lossless -s 0 -j 16 input.png output.avif
# WebP
cwebp -lossless -z 9 -mt input.png -o output.webp   
#JPEG XL
cjxl input.png output.jxl -q 100 -e 11 --allow_expert_options --num_threads=16 

比較方法

いろいろな可逆圧縮フォーマットで自然画像やスクリーンショット画像、ベクター画像を圧縮しました。

エンコーダ

使ったエンコーダは下記です。

  • png level 0-9 (大きいほど高圧縮) 
  • JPEG LS
  • JPEG 2000
  • JPEG XR
  • JPEG XL 0-11 (大きいほど高圧縮で11はExperimental モードを有効化しないと使用不可)
  • WebP 0-9 (大きいほど高圧縮) 
  • HEIF 0-9 (大きいほど高圧縮) 
  • AVIF 0-9 (小さいほど高圧縮) 

また,ロッシーな非可逆圧縮ですが,最高品質設定にして参照情報も取りました.

  • JPEGでYUV444のQP100設定
  • AVIFのロッシー版でYUV444のQP100設定

比較画像

以下の2つの画像データセットを使いました。

SCID

  • パワーポイントっぽい画像だったり、スクリーンショット画像だったり
  • 1280 x 720 が40枚

CID22

  • 自然画像(229枚)が多めでたまにベクター画像(21枚)が入っている
  • 512 x 512 が250枚

結果

下記に、圧縮結果した平均のサイズ[bpp], エンコード時間[秒]、デコード時間[秒]の結果を示します。

  • bpp (bits per pixel) は「1画素あたり何ビットで表現されているか」を表し、小さいほど高圧縮。24が最大値
  • 使用したマシンは、AMD Ryzen9 9950X

最大でスクショ画像(SCID)は12%くらい、自然画像(CID22)は30%くらいになりました。

表:SCIDの圧縮結果

method bpp enc. [sec] dec. [sec]
JPEGXL 11 3.067 67.718 0.069
JPEGXL 10 3.278 8.459 0.018
JPEGXL 7 3.550 0.539 0.016
Webp 9 3.560 1.864 0.006
Webp 0 4.522 0.015 0.007
AVIF (lossy) 4.533 4.707 0.031
JPEGLS 5.143 0.020 0.018
PNG 9 5.145 0.025 0.006
AVIF 0 5.899 4.735 0.035
JPEG2K 6.476 0.009 0.008
HEIC 9 7.087 0.209 0.054
JPEG (lossy) 7.389 0.012 0.005
JPEGXR 8.060 0.017 0.017
SCID全データ(クリックで展開)
method bpp enc. [sec] dec. [sec]
JPEGXL 11 3.067 67.718 0.069
JPEGXL 10 3.278 8.459 0.018
JPEGXL 9 3.403 2.412 0.018
JPEGXL 8 3.463 1.551 0.017
JPEGXL 7 3.550 0.539 0.016
Webp 9 3.560 1.864 0.006
Webp 8 3.641 0.547 0.006
Webp 7 3.685 0.263 0.006
JPEGXL 6 3.702 0.390 0.016
Webp 6 3.710 0.189 0.006
Webp 4 3.748 0.156 0.006
Webp 5 3.748 0.155 0.006
Webp 3 3.749 0.151 0.006
JPEGXL 5 3.803 0.330 0.015
Webp 2 3.914 0.130 0.006
Webp 1 4.064 0.083 0.006
JPEGXL 4 4.457 0.182 0.013
Webp 0 4.522 0.015 0.007
AVIFlossy 4.533 4.707 0.031
JPEGXL 3 4.884 0.030 0.012
JPEGLS 5.143 0.020 0.018
PNG 9 5.145 0.025 0.006
PNG 8 5.209 0.024 0.006
PNG 7 5.230 0.023 0.006
JPEGXL 2 5.234 0.026 0.007
PNG 6 5.272 0.022 0.006
PNG 5 5.307 0.021 0.006
PNG 4 5.352 0.018 0.006
PNG 3 5.418 0.018 0.006
JPEGXL 0 5.464 0.005 0.006
JPEGXL 1 5.464 0.004 0.006
PNG 2 5.568 0.015 0.006
AVIF 0 5.899 4.735 0.035
AVIF 1 6.127 3.578 0.036
AVIF 2 6.145 2.562 0.036
AVIF 3 6.159 1.487 0.036
AVIF 4 6.169 0.834 0.036
AVIF 5 6.212 0.620 0.037
AVIF 6 6.399 0.284 0.037
JPEG2K 6.476 0.009 0.008
HEIC 9 7.087 0.209 0.054
HEIC 8 7.091 0.193 0.055
HEIC 7 7.091 0.193 0.055
HEIC 6 7.117 0.179 0.055
HEIC 5 7.120 0.172 0.055
HEIC 3 7.123 0.171 0.055
HEIC 2 7.123 0.171 0.055
HEIC 4 7.123 0.169 0.055
HEIC 1 7.124 0.150 0.055
PNG 1 7.267 0.015 0.006
JPEG 7.389 0.012 0.005
AVIF 7 7.512 0.166 0.042
AVIF 8 7.912 0.111 0.044
JPEGXR 8.060 0.017 0.017
HEIC 0 9.150 0.091 0.049
AVIF 9 9.350 0.065 0.048
PNG 0 24.045 0.010 0.003

表:CID22の圧縮結果

method bpp enc. [sec] dec. [sec]
JPEGXL 11 7.322 33.042 0.037
AVIF (lossy) 7.485 4.508 0.013
JPEGXL 10 7.532 3.230 0.014
JPEGXL 4 8.114 0.058 0.011
Webp 9 8.134 1.803 0.003
JPEGLS 8.412 0.009 0.008
JPEG2K 8.809 0.004 0.003
JPEG (lossy) 8.876 0.004 0.002
Webp 0 9.493 0.007 0.003
AVIF 0 9.540 4.448 0.014
JPEGXR 10.208 0.007 0.006
PNG 9 11.088 0.013 0.003
HEIC 9 11.589 0.135 0.025
SCID全データ(クリックで展開)
method bpp enc. [sec] dec. [sec]
JPEGXL 11 7.322 33.042 0.037
AVIF (lossy) 7.485 4.508 0.013
JPEGXL 10 7.532 3.230 0.014
JPEGXL 9 7.555 0.982 0.014
JPEGXL 8 7.616 0.758 0.014
JPEGXL 7 7.662 0.204 0.013
JPEGXL 6 7.765 0.140 0.013
JPEGXL 5 7.890 0.109 0.012
JPEGXL 4 8.114 0.058 0.011
Webp 9 8.134 1.803 0.003
JPEGXL 3 8.156 0.016 0.009
Webp 8 8.214 0.308 0.003
Webp 7 8.321 0.097 0.003
Webp 6 8.332 0.082 0.003
Webp 5 8.341 0.069 0.003
Webp 4 8.342 0.070 0.003
Webp 3 8.345 0.068 0.003
JPEGLS 8.412 0.009 0.008
Webp 2 8.531 0.045 0.003
Webp 1 8.805 0.026 0.003
JPEG2K 8.809 0.004 0.003
JPEG (lossy) 8.876 0.004 0.002
JPEGXL 2 9.117 0.011 0.005
Webp 0 9.493 0.007 0.003
AVIF 0 9.540 4.448 0.014
AVIF 1 9.607 1.895 0.014
AVIF 2 9.632 1.693 0.014
AVIF 3 9.643 1.140 0.014
AVIF 4 9.659 0.587 0.014
AVIF 5 9.669 0.512 0.014
JPEGXL 0 9.827 0.004 0.005
JPEGXL 1 9.827 0.003 0.004
AVIF 6 9.862 0.208 0.015
JPEGXR 10.208 0.007 0.006
PNG 8 11.001 0.012 0.003
PNG 7 11.032 0.012 0.003
PNG 9 11.088 0.013 0.003
PNG 6 11.176 0.011 0.003
PNG 5 11.254 0.011 0.003
PNG 4 11.289 0.009 0.003
AVIF 7 11.405 0.122 0.017
PNG 3 11.418 0.009 0.003
HEIC 9 11.589 0.135 0.025
HEIC 7 11.589 0.123 0.025
HEIC 8 11.589 0.123 0.025
HEIC 1 11.600 0.098 0.026
HEIC 2 11.600 0.107 0.025
HEIC 3 11.600 0.107 0.025
HEIC 4 11.600 0.107 0.025
HEIC 5 11.602 0.109 0.025
HEIC 6 11.603 0.113 0.025
AVIF 8 11.645 0.081 0.017
PNG 2 11.677 0.007 0.003
AVIF 9 12.448 0.043 0.018
HEIC 0 14.067 0.059 0.022
PNG 1 16.183 0.007 0.003
PNG 0 24.056 0.004 0.001

JPEG XL

  • ブラウザ対応状況を考えなければJPEG XLが最善です
  • 計算時間の限界突破したモード(レベル11)で圧縮するとかなり小さくなります
  • 計算時間の限界突破したモード(レベル11)で圧縮すると、ロッシーなAVIF最高品質よりも小さくなります
  • スクショ画像は、レベル7くらい,自然画像はレベル4くらいでWebPよりも高速で小さくなります

WebP

  • WebPはブラウザ表示可能なものの中では最も小さいです
  • pngに比べて、自然画像もスクショ画像も70%くらいのサイズになってます
  • WebP最速オプションは、最も重たいpng(レベル9)よりも高速でファイルサイズも小さいです

png

  • 互換性だけが取り柄です
  • Googleのzopfliを使って総当たりでpngを試せば、pngレベル9から更に90%(スクショ画像で4.7bpp,自然画像で10bpp)くらいにはできるのですが、計算時間は1000倍以上かかるわりに、WebPの最速オプション以下の性能しかないため除外してます

AVIF

  • スクショ画像ではpng以下です
  • 自然画像はpngを上回ります
  • AVIF (lossy)と書いてあるのは、ロッシーな圧縮で画像は劣化しています
    • 参考までに表示しているものです

JPEG, AVIFのlossyな圧縮

  • 劣化はするけど最大品質で設定した方法です
  • 劣化させないものよりもサイズが大きいため、スクリーンショットのような画像でロッシーにする意味はありません
  • 自然画はさすがにロッシーな圧縮が強いです
    • JPEG-XLの計算時間限界突破設定以外には最も良かったです

まとめ

用途別のおすすめ

  • WebP → ロスレスWeb 配信
  • JPEG XL → 将来性・最高圧縮(非 Web)
  • PNG → 互換性最優先
  • AVIF → ロスレス用途はおすすめしません

JPEG XLのブラウザ対応状況

  • Safariが部分的に対応
  • Firefoxは原則非対応だが、Nightly で設定を有効化した場合のみ対応(実験段階)
  • Chrome/Edgeは非対応だが再検討中 (ソース)
  • 状況確認用のリンク

なお、PNG、WebP、AVIFはメジャーなブラウザは全て閲覧可能です。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?