実測ベンチマーク:JPEG・PNG・WebPをPhotrimで圧縮した結果を検証する

公開日: 更新日:

Photrimで実際にJPEG・PNG・WebP画像を圧縮し、高画質・標準・高圧縮それぞれの元容量・圧縮後容量・削減率を実測しました。PNGでほとんど縮まない、むしろ増える場合があることも含めて正直に紹介します。

この記事について

「圧縮するとどのくらい軽くなるの?」という疑問に、想定や一般論ではなく、Photrimの実装を実際に動かして得た数値で答えます。都合の良い結果だけを選ばず、縮まないケース・むしろ増えてしまうケースも含めてそのまま掲載しています。

検証方法

実在の写真は権利関係の確認が難しいため使わず、以下の3枚をこの記事のために生成しました。

  • JPEG(写真相当): 空・山並み・草地のグラデーションとノイズで構成した、写真に近い情報量を持つ合成画像(1600×1200px)。
  • PNG(スクリーンショット相当): ヘッダーバー・カード・テキスト行を模した、単色の図形中心の合成画像(1200×900px、半透明領域を含む)。
  • WebP(写真相当): 上記JPEGと同じ内容をWebP形式で保存したもの。

いずれも乱数シードを固定して生成しているため、誰でも同じバイト列の画像を再生成できます。各画像を、Photrimの圧縮処理(App\Domain\ImageCompression\Service\CompressService)へ高画質・標準・高圧縮のそれぞれで直接渡し、出力ファイルの実際のサイズを計測しました。

結果:JPEG(写真相当の画像)

圧縮品質 ファイルサイズ 削減率
(元画像) 561.1KB -
高画質 205.5KB 63.4%
標準 120.8KB 78.5%
高圧縮 86.5KB 84.6%

写真のような情報量の多い画像では、高画質でも6割以上、高圧縮では8割以上ファイルサイズが縮みました。

画質上の注意: 出力画像を実際に拡大して見比べたところ、高画質では山の輪郭は滑らかでしたが、高圧縮では輪郭周辺(色の境界)に、本来なかった色のにじみ(リンギングノイズ)がはっきり確認できました。全体を縮小して見る分には気づきにくい程度ですが、輪郭のくっきりした被写体を等倍で確認する用途では、高圧縮の選択に注意が必要です。

結果:PNG(スクリーンショット相当の画像)

圧縮品質 ファイルサイズ 削減率
(元画像) 6.9KB -
高画質 6.8KB 1.2%
標準 6.9KB 0.2%
高圧縮 22.5KB 約3.3倍に増加(-225.6%)

正直にお伝えすると、この画像ではほとんど縮まず、「高圧縮」を選ぶとむしろ元より大きくなりました。これは失敗ではなく、PNGの仕組みによる想定内の結果です。PNGは可逆圧縮のため、そもそも圧縮できる余地が画像の内容(この場合は単色の図形中心で、既に高い圧縮率で保存されていた画像)に左右されます。加えてPhotrimの現在の実装では、PNGの圧縮レベルは「高画質」が最も強く圧縮され、「高圧縮」が最も弱く圧縮される、直感とは逆の対応になっています(詳しい仕組みは画像圧縮の仕組みとはで解説しています)。PNG画像でファイルサイズを小さくしたい場合は、名前とは逆に「高画質」を選ぶことをおすすめします。

画質上の注意: PNGは可逆圧縮のため、圧縮レベルを変えても画質は劣化しません。実際に、高画質・標準・高圧縮それぞれの出力を再度デコードしたピクセルデータを比較したところ、3設定とも完全に一致しました(見た目の差はゼロです)。圧縮レベルの違いはファイルサイズにのみ影響し、画質には一切影響しません。

結果:WebP(写真相当の画像)

圧縮品質 ファイルサイズ 削減率
(元画像) 405.7KB -
高画質 148.3KB 63.5%
標準 60.4KB 85.1%
高圧縮 13.6KB 96.6%

同じ写真相当の内容でも、WebPはJPEGより高圧縮時の削減率が大きくなりました。形式ごとの違いはJPEGとはWebPとはでも解説しています。

画質上の注意: JPEGとは劣化の現れ方が異なりました。JPEGの輪郭のにじみに対し、WebPの高圧縮では背景のノイズ(ザラつき)部分が滑らかに均され、ディテールの粒状感が失われる傾向が見られました。輪郭のにじみのような目立つノイズは出にくい一方、質感の細かい部分ではのっぺりした印象になりやすい、という違いです。

結果から分かること

  • 写真のような情報量の多い画像(JPEG・WebP)は、圧縮品質を下げるほど大きく縮みます。ただしJPEGは輪郭周辺のにじみ、WebPはディテールの平滑化というように、劣化の現れ方は形式によって異なります。
  • 単色の図形中心の画像(PNGでよくあるスクリーンショット等)は、そもそも縮む余地が小さく、設定によってはむしろ大きくなることがあります。
  • PNGの「高画質」「高圧縮」は、JPEG・WebPと違い、ファイルサイズの観点では名前と逆の対応になります。一方で画質(見た目)は、可逆圧縮のためどの設定でも一切劣化しません。

これらはこの記事の検証画像で得た実測値であり、実際の写真やスクリーンショットでは画像の内容によって結果が変わります。目安としてご利用ください。

測定条件

  • 実行日: 2026年9月18日
  • 対象コミット: 0d485a3
  • 実行環境: PHP 8.3.15、Laravel 10.50.2
  • 検証画像の生成スクリプト: backend/scripts/generate-benchmark-images.php(リポジトリに同梱、将来アルゴリズムを変更した際は同じ手順で再計測できます)

実際に圧縮してみる

ご自身の画像でどのくらい縮むかは、画像を今すぐ圧縮するから実際に試してみるのが一番確実です。

関連記事