可逆圧縮と非可逆圧縮の違いとは?PNG・JPEG・WebPをPhotrimで実測して比較

著者: Photrim編集部 公開日: 更新日:

可逆圧縮は画質が一切変わらず、非可逆圧縮は大きく軽くなる代わりに元へ戻せません。同一画像のPNG・JPEG・WebPをPhotrimで実際に圧縮して容量と画質を比べ、繰り返し圧縮した場合の劣化や用途別の判断表もまとめました。

検証方法: 同一の画素データをPNG・JPEG・WebPで保存した3枚の画像を、App\Domain\ImageCompression\Service\CompressServiceへ実際に渡し、高画質・標準・高圧縮それぞれの出力ファイルサイズ・PSNR・画素の一致を計測した実測値です(backend/scripts/measure-lossless-lossy-images.php、詳細は本文「測定条件」参照)。

結論:可逆圧縮は「画質が変わらない」、非可逆圧縮は「大きく軽くなる代わりに戻せない」

  • 可逆圧縮は、圧縮しても元の画素を1つも変えずに復元できる方式です。PNGが代表例です。画質は絶対に落ちませんが、容量はあまり減りません。
  • 非可逆圧縮は、人の目に気づかれにくい情報を間引いて容量を減らす方式です。JPEGが代表例で、WebPにも非可逆のモードがあります。大きく軽くなりますが、間引いた情報は元に戻せません。

この記事では、「どのくらい違うのか」を言葉だけで終わらせず、同じ画像をPNG・JPEG・WebPで保存し、Photrimで実際に圧縮した結果で確認します。さらに、「圧縮した画像をもう一度圧縮するとどうなるか」「用途ごとにどちらを選ぶべきか」までまとめます。

検証方法

実在の写真は権利関係の確認が難しいため、空・山並み・草地を描いた写真に近い合成画像(800×600px)を1枚用意しました。乱数シードを固定して生成しているため、誰でも同じ画素の画像を再生成できます。

次に、この画像を3つの形式で保存しました。

  • original.png: 可逆形式で保存した基準(正解)の画像。以降の比較はすべてこの画像との差で表します。
  • original.jpg: original.pngを品質95のJPEGとして保存し直したもの。
  • original.webp: original.pngを品質95のWebPとして保存し直したもの。

この3枚を「ユーザーが手元に持っている元の画像」とみなし、Photrimの圧縮処理(App\Domain\ImageCompression\Service\CompressService)へ高画質・標準・高圧縮のそれぞれで渡しました。Photrimはアップロードされた形式のまま圧縮するため、PNGはPNG、JPEGはJPEG、WebPはWebPで出力されます。

画質は、基準のoriginal.pngと比べたPSNR(ピーク信号対雑音比、後述)で表します。PNGについては、デコードした画素を無圧縮で再エンコードしたバイト列のMD5が基準と一致するかで、「画素が1つも変わっていない」ことを確認しました。

結果1:同じ画像でも、形式によって容量と画質はこれだけ変わる

形式 圧縮品質 ファイルサイズ 削減率 PSNR(基準PNGとの比較) 画素の完全一致
PNG (元画像) 204.5KB - 完全一致 はい
PNG 高画質 213.1KB -4.2% 完全一致 はい
PNG 標準 226.6KB -10.8% 完全一致 はい
PNG 高圧縮 230.4KB -12.7% 完全一致 はい
JPEG (元画像) 196.3KB - 49.66dB いいえ
JPEG 高画質 61.2KB 68.8% 43.32dB いいえ
JPEG 標準 32.7KB 83.3% 40.11dB いいえ
JPEG 高圧縮 23.3KB 88.1% 36.15dB いいえ
WebP (元画像) 108.9KB - 42.57dB いいえ
WebP 高画質 40.4KB 62.9% 39.71dB いいえ
WebP 標準 17.9KB 83.6% 37.46dB いいえ
WebP 高圧縮 5.7KB 94.8% 36.23dB いいえ

この表から読み取れるポイントは次のとおりです。

  • PNGは3つの設定すべてで画素が完全に一致しました。可逆圧縮なので、どの設定を選んでも画質は変わりません。その代わり、この画像ではPhotrimの出力は元よりむしろ大きくなっています(-4.2%〜-12.7%)。PNGは画質の設定ではなく圧縮の「かけ方」の違いであり、高画質(圧縮レベル8)が最も強く、高圧縮(レベル2)が最も弱く圧縮される仕組みのためです。詳しくは画像圧縮の仕組みをご覧ください。
  • JPEGとWebPは、高画質でも6割以上、高圧縮では9割近く小さくなりました。ただし、いずれも基準PNGとは画素が一致せず、PSNRは設定を下げるほど低下しています。
  • 「元画像」の時点でJPEG・WebPはすでに劣化しています。同じ画素を品質95で保存し直しただけで、JPEGは49.66dB、WebPは42.57dBになりました。非可逆形式は、保存した時点で劣化が始まっています。
  • PNGの元画像(204.5KB)とJPEGの元画像(196.3KB)の容量は、この画像ではほとんど変わりません。これは、この合成画像が滑らかなグラデーションと少量のノイズで構成されており、PNGが得意な画像だからです。実際の写真は色の変化が複雑なため、PNGはJPEGよりずっと大きくなるのが一般的です。数値は検証用の1枚の結果であり、写真の種類によって変わります。

劣化は目でどう見えるのか(拡大比較)

PSNRの数値だけでは違いがわかりにくいため、山の頂上付近を3倍に拡大して比べました。拡大には最近傍法(画素をそのまま大きくする方法)を使い、表示用の画像自体は可逆のPNGで保存しているので、ここに映る劣化はすべて圧縮の結果です。

基準画像(original.png)と、Photrimで高画質に圧縮したPNG(画素は完全に一致)

基準の画像(PNG)を山の頂上付近で3倍に拡大した画像。空に細かな粒状のノイズが見える

Photrimで高画質に圧縮したPNGを同じ場所で3倍に拡大した画像。基準画像と区別がつかない

JPEGを高圧縮で圧縮(PSNR 36.15dB)

JPEGを高圧縮で圧縮し山の頂上付近を3倍に拡大した画像。粒状のノイズが消え、輪郭の周りに色のにじみが見える

WebPを高圧縮で圧縮(PSNR 36.23dB)

WebPを高圧縮で圧縮し山の頂上付近を3倍に拡大した画像。粒状のノイズが消えて全体がなめらかになり、輪郭がやや柔らかく見える

拡大して見たところ、次のような違いがありました。

  • 可逆のPNGは、空の細かな粒状ノイズまで基準画像とまったく同じです。
  • **JPEG(高圧縮)**では、粒状のノイズが消えて平らになり、山の輪郭の周りに本来なかった色のにじみが出ました。
  • **WebP(高圧縮)**でも粒状ノイズは消えましたが、にじみではなく全体がなめらかになり、輪郭がやや柔らかく見えました。

JPEGとWebPで劣化の見え方が異なるのは、間引く情報の選び方が違うためです。どちらも等倍や縮小表示では気づきにくいものの、拡大したり、輪郭の鮮明さが大切な画像だったりする場合は、高圧縮の選択に注意してください。

結果2:圧縮を繰り返すとどうなるか

「一度圧縮した画像を、後からもう一度圧縮したらどうなるか」も調べました。上と同じ3枚を、高画質でそのまま10回続けて圧縮しています。

形式 1回目 2回目 5回目 10回目
PNG 213.1KB・画素一致 213.1KB・画素一致 213.1KB・画素一致 213.1KB・画素一致
JPEG 61.2KB・43.32dB 61.2KB・43.32dB 61.2KB・43.32dB 61.2KB・43.32dB
WebP 40.4KB・39.71dB 39.5KB・39.21dB 39.2KB・37.89dB 39.2KB・34.65dB
  • PNGは何回繰り返しても画素が完全に一致したままです。可逆圧縮では世代を重ねても劣化しません。
  • WebPは、同じ設定でも繰り返すたびに画質が下がり続け、10回目には1回目より約5dB低くなりました。
  • JPEGは、同じ品質設定で繰り返した場合に限り、この画像では1回目以降の容量・PSNRが小数点以下まで変わりませんでした。同じ設定で再圧縮すると、すでに間引かれた情報がそのまま残るだけで、新たに間引かれる量が少ないためと考えられます。

ただし、これは「同じ設定を繰り返した場合」の結果です。設定を変えながら重ねると、劣化は積み重なります。同じ画像を、高画質→標準→高圧縮の順に1回ずつ圧縮した結果は次のとおりです。

形式 高圧縮を1回だけ(基準PNGから) 高画質→標準→高圧縮と順に3回
JPEG 23.3KB・36.15dB 23.2KB・35.32dB
WebP 5.7KB・36.23dB 14.9KB・34.03dB

どちらも、最後の設定が同じ高圧縮であるにもかかわらず、3回重ねたほうがPSNRが低くなりました。WebPでは容量も大きくなっています。非可逆形式は、なるべく元の画像から1回だけ圧縮するのが、画質と容量の両面でおすすめです。

用途別の選び方

以下は、ここまでの実測と、形式ごとの特性にもとづく目安です。

用途 向いている考え方 理由
編集用の元画像・保管 可逆(PNG)のまま保管し、公開用に別途圧縮する 非可逆は保存のたびに劣化し、元へ戻せないため
ブログの写真 JPEG・WebPの高画質〜標準 6〜8割小さくなり、通常の表示では差に気づきにくい
ネットショップの商品写真 JPEG・WebPの高画質 拡大表示や質感を見せる用途では、劣化の見え方が重要なため
スクリーンショット・文字入りの図 PNGのまま 文字や直線の輪郭にJPEG特有のにじみが出るのを避けたいため。容量は実測ベンチマークのとおり、あまり縮まない
ロゴ・透過が必要な画像 PNG 透過部分の境界を保持するため(実測はベンチマーク記事を参照)
SNSへの投稿 JPEG・WebPの標準 投稿先でさらに再圧縮される場合があるため、元の高画質版は手元に残しておく
メールへの添付 JPEG・WebPの高圧縮(容量の上限が厳しい場合) 容量を最優先する場面。ただし拡大して使う画像には不向き

Photrimは形式を変換せず、アップロードされた形式のまま圧縮します。形式を変える必要がある場合は、ほかのツールで変換してからアップロードしてください。用途別の詳しい手順は用途別ガイド、各形式の特徴はJPEGとは・PNGとは・WebPとはをご覧ください。

この結果からわかること

  • 可逆圧縮(PNG)は、画質を一切変えたくない場面の味方ですが、容量はほとんど減りません。
  • 非可逆圧縮(JPEG・WebP)は大きく軽くなりますが、間引いた情報は戻せません。設定を下げるほど、拡大したときの劣化が目立ちます。
  • 非可逆形式は、繰り返しや設定の組み合わせで劣化が積み重なります。圧縮は元の画像から1回で済ませるのが基本です。
  • 実際の効果は画像の内容に左右されます。この記事の数値は、検証用に用意した1枚の合成画像の結果です。

専門用語の補足

  • 可逆圧縮: 圧縮しても元のデータを完全に復元できる方式。PNGが代表例で、W3Cの仕様でも可逆圧縮の形式として定義されています。
  • 非可逆圧縮: 圧縮の過程で一部のデータを間引き、元には戻せない方式。JPEGが代表例です。WebPは可逆・非可逆の両方に対応していますが、Photrimでは非可逆で出力します。
  • PSNR(ピーク信号対雑音比): 圧縮後の画像が元の画像にどれだけ近いかを表す客観的な画質指標。単位はdB(デシベル)で、数値が大きいほど劣化が小さいことを表します。ここでは、元の画像と圧縮後の画像を同じ大きさ(幅400px)に縮小してから、画素ごとの色の差を比べて算出しました。

測定条件

  • 実行日: 2026年10月2日
  • 対象コミット: fffc028(この記事の追加作業の直前時点)
  • 実行環境: PHP 8.3.35、Laravel 10.50.2、GD 2.3.3
  • 検証画像の生成スクリプト: backend/scripts/generate-lossless-lossy-images.php(リポジトリに同梱、固定された乱数シードから同じ画素を再生成できます)
  • 計測スクリプト: backend/scripts/measure-lossless-lossy-images.php(ファイルサイズ・PSNR・画素の一致・繰り返し圧縮の結果をすべてこのスクリプトで算出しており、本文中の数値を手作業で創作していません)

実際に圧縮してみる

ご自身の画像で、可逆と非可逆のどちらがどれだけ縮むかは、画像を今すぐ圧縮するから実際に試して確認できます。高画質・標準・高圧縮を切り替えて、見た目と容量の変化を比べてみてください。

出典

関連記事