gazou-compressor.jp

WebP/AVIFの典型的な破綻と対処法

圧縮を攻めると副作用が出ます。文字のにじみ、グラデの段差、輪郭の振動ノイズ、ブロックの段差……。 本稿は原因を短く把握し、コーデック設定+前処理で現場的に直すためのチートシートです。

関連ガイド
文字にじみの詳細は UI文字のにじみ対策 / グラデ対策は AVIFチートシート / リグレッション防止は 画像QAプレイブック を参照。

要点(TL;DR)

  • 文字/UIは 4:4:4 または可逆(PNG/WebP Lossless)。
  • グラデは 10bit(AVIF)+Q緩和(数値を小さく)。必要なら微小ノイズ付加。
  • 輪郭ノイズは事前シャープ弱め+Q緩和。過度なアンシャープは禁物。
  • ブロッキングはQ緩和または解像度最適化(実幅に合わせる)。
  • 検証は白/黒背景トグル視覚差分で。LCPにはfetchpriorityとpreload。

1. 破綻の種類と原因

症状主な原因典型シーン
にじみ(クロマブリード)4:2:0の色サブサンプリング小さな文字/UI、細線、コントラストの高い境界
バンディング量子化+8bitの段差空やグラデーション、夜景の陰影
リングング/モスキート過度なシャープ+高圧縮黒文字の縁、ロゴの境界
ブロッキング低ビットレートでのブロック境界強調低Qで強く圧縮した写真

2. 対策早見表

症状即効対策補足
文字がにじむ4:4:4(可逆ならPNG/WebP Lossless)文字対策参照
グラデ段差AVIF10bitQ緩和+微小ノイズ夜景/空で顕著。AVIF設定
輪郭の振動事前シャープ弱め+Q緩和過剰アンシャープは禁物
ブロッキングQ緩和または解像度最適化実表示幅に合わせる(過大/過小を避ける)

3. 実務レシピ(Sharp / cwebp / avifenc)

import sharp from "sharp";

// グラデ画像のAVIF(10bit + Qゆるめ)
await sharp("input.png")
  .avif({ quality: 62, effort: 6, chromaSubsampling: "4:2:0", depth: 10 })
  .toFile("out.avif");

// UI混在のWebP(4:4:4)
await sharp("ui.png")
  .webp({ quality: 90, effort: 5, smartSubsample: false })
  .toFile("out.webp");
# cwebp(UI混在:4:4:4)
cwebp -q 90 -m 6 -mt -af -sharp_yuv -alpha_q 100 -sns 50 -segments 4 -v -o out.webp in.png

# avifenc(グラデ保護:10bit + Q緩和)
avifenc --min 0 --max 63 --cq-level 26 --yuv 420 --depth 10 --speed 5 -o out.avif in.jpg

文字/UIは可逆や4:4:4が安全。グラデはbit深度とQで段差を抑えます。最終は実表示幅に合わせたsrcset/sizesで過大ダウンロードを防止。

4. 検証と回帰防止

  • 白/黒背景のトグルで縁のにじみを確認(透過は特に)。
  • 視覚差分(pixelmatch等)とΔE(CIEDE2000)の両輪で監視。
  • ヒーローはpreload+fetchpriority=high、CLSゼロ(寸法明示)。

5. 公開前チェック(10項目)

  • 文字/UIににじみ無し(必要なら4:4:4/可逆)。
  • グラデ段差が解消(10bit+Q緩和済み)。
  • 輪郭ノイズが収束(事前シャープ弱め)。
  • ブロッキングが目立たない(Q/解像度を調整)。
  • srcset/sizesが実幅と一致、過大ダウンロード無し。
  • CLSゼロ:width/height 明示、広告はプレースホルダで高さ確保。
  • 白/黒背景で縁が破綻しない(透過チェック)。
  • Before/Afterを /compare で視覚比較。
  • PSI/RUMでLCP/INPの悪化がない。
  • 差し替え時は指紋(v2等)でキャッシュ更新。

6. まとめ:設定×前処理で“壊さない”

破綻の多くは設定の相性前処理で止まります。文字=4:4:4、グラデ=10bit、 輪郭=シャープ弱め、解像度=実幅準拠。この型を運用に落とし込めば、画質と軽さの両立が安定します。

gazou-compressor.jp 編集部
画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事