WebPの品質でファイルサイズはどれだけ変わるか 品質90から20まで写真3枚で実測しました

IT・仕事術

記事内に広告が含まれています。

この記事でわかることをまとめました

ブログに載せる写真をWebPで保存するとき、品質の設定でファイルサイズがどれだけ変わるのかを、私が実測しました。

結論です。今回の写真3枚(いずれも900×1200pxのJPEG)を、Pillowで品質90・75・60・40・20の5段階のWebP(method=6)に保存した場合、品質90で保存したファイルを100とした割合の平均は、品質75で53.0%、品質60で43.6%、品質40で33.3%、品質20で22.0%になりました。

一つ上の品質の出力を100とした割合で比べると、品質90から品質75へ下げた段階が、4つの段階の中では一番大きな下げ幅でした。

図1:品質を下げるほど、品質90に対する割合は下がりました

写真3枚それぞれについて、品質90で保存したファイルを100とした割合を品質ごとに比べたグラフで、品質75では51.5〜54.2%、品質20では20.8〜24.1%になっていることを示しています
図1:品質90で保存したファイルを100とした割合を、写真ごとに示しました。

図1は、同じ写真の品質90の出力を100として、品質75・60・40・20の割合を写真ごとに並べたものです。

調べた写真と保存の方法をまとめました

素材は、このブログの記事用に用意した写真3枚です。夜の通り、建物の外観、ボトルの棚で、いずれも900×1200pxのJPEGです。

元のファイルの大きさは、夜の通りが217,784バイト、建物の外観が210,187バイト、ボトルの棚が226,196バイトです。

私は2026年11月15日に、この3枚をPillow(Pythonの画像ライブラリ、バージョン10.2.0)で品質90・75・60・40・20の5段階のWebPとして保存しました。3枚×5段階で、15点のファイルができました。

  • 保存の方法は method=6 に固定しました。
  • 大きさ(寸法)は変えていません。
  • ファイルサイズは、保存したファイルの実測値です。
  • 変換時間は、各条件で保存を3回行い、3回の中央値を使いました。

SSIMは、ffmpegのssimフィルタで測りました。

割合は、バイト数から直接計算し、小数第1位に丸めました。割合の平均は、写真ごとの割合を丸める前の値で平均し、最後に小数第1位に丸めています。

写真3枚×品質5段階のバイト数と割合を表にまとめました

写真品質ファイルサイズ(バイト)品質90を100とした割合元のJPEGを100とした割合
夜の通り90236,348100.0%108.5%
夜の通り75121,72051.5%55.9%
夜の通り6099,37242.0%45.6%
夜の通り4075,06431.8%34.5%
夜の通り2049,12420.8%22.6%
建物の外観90229,916100.0%109.4%
建物の外観75122,27053.2%58.2%
建物の外観6099,71443.4%47.4%
建物の外観4074,87832.6%35.6%
建物の外観2048,77021.2%23.2%
ボトルの棚90236,568100.0%104.6%
ボトルの棚75128,24454.2%56.7%
ボトルの棚60107,47845.4%47.5%
ボトルの棚4083,95035.5%37.1%
ボトルの棚2057,06224.1%25.2%
3枚の平均90234,277.3100.0%107.5%
3枚の平均75124,078.053.0%56.9%
3枚の平均60102,188.043.6%46.9%
3枚の平均4077,964.033.3%35.7%
3枚の平均2051,652.022.0%23.7%

段階ごとに分かったことをまとめました

私は、隣り合う品質どうしで、下の品質の出力を上の品質の出力と比べました。比べる相手は、同じ写真の一つ上の品質の出力で、それを100とした割合です。

  • 品質75の出力は、同じ写真の品質90の出力を100とすると、51.5%/53.2%/54.2%で、平均は53.0%でした。
  • 品質60の出力は、同じ写真の品質75の出力を100とすると、81.6%/81.6%/83.8%で、平均は82.3%でした。
  • 品質40の出力は、同じ写真の品質60の出力を100とすると、75.5%/75.1%/78.1%で、平均は76.2%でした。
  • 品質20の出力は、同じ写真の品質40の出力を100とすると、65.4%/65.1%/68.0%で、平均は66.2%でした。
  • 品質20の出力は、同じ写真の品質90の出力を100とすると、20.8%/21.2%/24.1%でした。

なお、品質の間隔は、90から75までと75から60までが15ずつ、60から40までと40から20までが20ずつで、同じではありません。

一つ上の品質の出力を100とした割合で比べると、4つの段階の中で一番大きく下がったのは品質90から品質75の段階でした。次に品質40から品質20の段階の下がり方が大きく、品質75から品質60の段階が一番小さくなりました。

品質90のWebPは、元のJPEGより大きくなりました

品質90で保存したWebPは、元のJPEGファイルを100とすると、104.6〜109.4%で、平均は107.5%でした。今回の写真3枚では、3枚とも元のJPEGより大きくなりました。

元のJPEGを100とした割合が100%を下回ったのは、品質75以下の出力でした。元のJPEGを100とした割合の平均は、品質75で56.9%、品質20で23.7%でした。

図2:SSIMは品質を下げるほど下がりました

写真3枚それぞれについて、元のJPEGとのSSIMを品質ごとに比べたグラフで、品質90では0.988587〜0.989582、品質20では0.893679〜0.922873になっていることを示しています
図2:元のJPEGファイルとのSSIMを、写真ごとに示しました。

図2のSSIMは、1に近いほど比べる相手に近いことを表す指標です。図2の縦軸は0.80から始まっています。

写真品質90品質75品質60品質40品質20
夜の通り0.9895820.9661430.9529260.9365940.906285
建物の外観0.9885870.9633900.9499870.9277880.893679
ボトルの棚0.9893480.9677140.9615030.9472210.922873
3枚の平均0.9891720.9657490.9548050.9372010.907612

元のJPEGファイルとのSSIMの平均は、品質90で0.989172、品質75で0.965749、品質60で0.954805、品質40で0.937201、品質20で0.907612でした。品質を下げるほど、平均も下がりました。

SSIMの比べる相手は、元のJPEGファイルです。元のファイル自体がすでにJPEGなので、SSIMは「無劣化の元画像との近さ」ではありません。「元のJPEGファイルとの近さ」を示しています。

変換時間は品質が高いほど長い傾向でした

写真品質3回の時間(秒)中央値(秒)
夜の通り900.624/0.601/0.6220.622
夜の通り750.430/0.486/0.4230.430
夜の通り600.376/0.431/0.3940.394
夜の通り400.340/0.329/0.3280.329
夜の通り200.313/0.265/0.2650.265
建物の外観900.570/0.682/0.7080.682
建物の外観750.436/0.434/0.4230.434
建物の外観600.394/0.411/0.5430.411
建物の外観400.371/0.364/0.4740.371
建物の外観200.294/0.321/0.2890.294
ボトルの棚900.544/0.572/0.6280.572
ボトルの棚750.428/0.435/0.4550.435
ボトルの棚600.410/0.374/0.4090.409
ボトルの棚400.359/0.394/0.3460.359
ボトルの棚200.281/0.286/0.2880.286

変換時間の中央値は、写真3枚で品質90が0.572秒から0.682秒、品質20が0.265秒から0.294秒でした。

図3:夜の通りの中央付近を、元のJPEGとWebP3種類で並べました

夜の通りの中央付近を切り出し、元のJPEG、WebP品質90、WebP品質60、WebP品質20を同じ大きさで横に並べた画像で、各画像に英語のラベルを付けています
図3:夜の通りの中央付近を、元のJPEGとWebP3種類で同じ大きさにして並べました。

図3は、夜の通りの写真の中央付近(元の座標で左上300・500から300×300px)を切り出したものです。

図3のラベルは英語で、Original JPEG、WebP q90、WebP q60、WebP q20と表示しています。

この表示の大きさでは、WebP品質20と元のJPEGファイルの違いは、私の目視ではっきりとは分かりませんでした。違いの判断は、SSIMの数値で行いました。

この実測を読むときの注意点をまとめました

  • 元の写真は900×1200pxで、すでにJPEGとして保存されていたファイルです。カメラから取り出したばかりの大きな写真では、割合の出方が変わる場合があります。
  • 品質の数値は、保存に使ったPillow(内部のWebPライブラリ)での設定値で、保存の方法は method=6 です。ほかのソフトでは、同じ品質の数値でも結果が変わる場合があります。
  • SSIMは元のJPEGファイルとの比較です。元のファイル自体の画質を評価する数値ではありません。
  • 変換時間は、この環境での計測です。使う機械が変われば、時間は変わります。

関連する計測記事もあわせて読んでみてください

このブログで実測した記事として、WebPとJPEGの形式の違いを実測した記事があります。

このブログで実測した記事として、JPEGの品質を実測した記事もあります。あわせて読んでみてください。

今回の実測の結論をまとめました

今回の写真3枚(900×1200pxのJPEG)を、Pillowで品質90から20までの5段階のWebP(method=6、寸法は変更なし)に保存した範囲では、品質90で保存したファイルを100とすると、平均は品質75で53.0%、品質20で22.0%でした。

元のJPEGを100とすると、品質90のWebPは平均107.5%で元より大きく、品質75は平均56.9%、品質20は平均23.7%でした。

SSIMの平均は、元のJPEGとの比較で、品質90の0.989172から品質20の0.907612まで下がりました。

私の目視では、この表示の大きさでは品質20と元のJPEGの違いははっきりとは分かりませんでした。この結果は、今回の写真3枚と5段階の範囲に限った実測です。

コメント

タイトルとURLをコピーしました