# 画像の容量制限を推測せずに満たす方法

画像圧縮は測定が必要なトレードオフです。同じ品質値でも、画像の
内容、形式、ブラウザーのエンコーダーによってファイルサイズは変わり
ます。安全な手順は、元ファイルを残し、見た目の品質かバイト上限の
どちらを優先するか決め、設定値ではなくダウンロード結果を確認すること
です。

LutrakitのImage Compressor候補は、1ファイル50 MiBまでの静止JPEG・PNG・
WebPを複数処理し、ブラウザー内でJPEGまたはWebPを作成します。ピクセル
寸法は変えません。目標サイズモードは品質を変えて試しますが、幅や高さ
を無断で縮小しません。アニメーションPNG・WebPは、1フレームだけを保存
しないよう拒否します。

<figure class="guide-visual">
  <img src="/guides/compress-images-quality-target-size-tool-ja.webp" alt="WebP出力、品質82パーセント、端末内バッチ処理を示す画像圧縮ツールの設定画面" width="1184" height="691" loading="lazy" decoding="async">
  <figcaption>現在の日本語画面には、以下の確認で使う形式、品質、プライバシーの初期設定が表示されています。</figcaption>
</figure>

## 見た目を優先するときは品質を選ぶ

品質モードは、結果を目視でき、厳密なバイト上限がない場合に向きます。
10%から100%まで選べ、初期値は82%です。この数値はブラウザーの
エンコーダーへの要求であり、共通の画質点数ではありません。同じ82%でも
JPEGとWebP、別の画像、別のブラウザーでは一致しません。

まず初期値で処理し、細い文字、髪、強い輪郭、グラデーション、反復模様を
100%表示で確認します。重すぎる場合は元画像からやり直して品質を下げ、
劣化が気になる場合は上げます。非可逆圧縮した出力を再び入力にして何度も
保存すると、劣化が重なる場合があります。

## バイト上限があるときは目標サイズを選ぶ

フォームやメッセージサービスなどに上限がある場合は目標モードを使い
ます。16〜20,480 KBの整数を入力します。この画面では1 KBを1,024バイト
として扱います。最大10段階の品質を高い方から等間隔で試します。

検索は各試行で実際に作られたBlobを測定します。品質が下がればサイズも
必ず単調に下がるとは仮定しません。目標以下になった最初の試行を返し、
どれも届かなければ、実測した中で最小の出力を返して未達と明示します。

| 結果 | 意味 | 次の判断 |
| --- | --- | --- |
| 目標達成 | このブラウザーで指定バイト以下になった | 見た目、寸法、提出先での受理を確認する |
| 目標未達 | 10段階のどれも上限に届かなかった | 上限を緩める、別途縮小する、別の方法を使う |
| 元より大きい | 再エンコードで容量を減らせなかった | 変換が不要なら元を使う |

この版はリサイズしないため、目標はベストエフォートです。数字を達成する
ためにピクセルを黙って捨てるより、未達を表示する方が正確です。

## JPEGとWebPを意図して選ぶ

提出先が対応していれば、WebPはWeb配信用の出発点になります。JPEGは
透明度が不要な写真で広く使われます。どちらも常に最良とは限らないため、
実際の提出先でダウンロード結果を比較します。

JPEGは透明度を保持できません。LutrakitはJPEG描画前にキャンバスを白で
塗るため、透明ピクセルは白になります。透明度が必要ならWebPを選び、
出力のアルファを確認してください。

ブラウザーが要求されたコーデックに対応しない場合、Webプラットフォーム
は別形式を返すことがあります。LutrakitはBlobの実MIME型を検査し、PNG
にフォールバックしたデータへ誤ったJPEG/WebP拡張子を付けず、エラーを
表示します。

## 変わるものと変わらないものを知る

デコード後のビットマップの幅と高さは保持されます。保存された向きを反映
するようブラウザーへ要求し、同じ寸法で描画します。圧縮はバイト数と
ピクセル値を変える場合がありますが、意図的なリサイズは行いません。

出力はキャンバスから新しくシリアライズされます。元のExif、GPS、ICC
プロファイルはコピーされません。一方、ブラウザーのエンコーダーが技術
情報を追加する場合があるため、認証済みメタデータ消去ツールではありま
せん。位置、著作者、色管理、プライバシーに関わる場合は、別の検査ツール
で出力を確認します。

APNGは`acTL`、アニメーションWebPはRIFF内の`ANIM`・`ANMF`チャンクを
使います。Lutrakitはデコード前にこれらを検出して拒否します。全フレーム
を残す必要がある場合はアニメーション対応編集ソフトを使います。

## 再現できる確認手順

1. 元ファイルを別の場所に保存します。
2. [画像圧縮ツール](/ja/gazo-asshuku/)を開き、代表的な静止画像を1枚選びます。
3. WebP・82%のまま処理し、ダウンロードします。
4. 元と出力のサイズ、寸法、実MIME型、100%表示の劣化を記録します。
5. 元画像からやり直し、目標モードで提出先の上限を1,024バイト単位のKBで
   入力します。
6. 達成・未達、実出力サイズ、表示された品質を記録します。
7. 実際に使うブラウザーと提出先で繰り返します。

バッチでは、同じ提出条件を持つ画像をまとめます。各画像に個別の出力と
結果が作られます。写真、スクリーンショット、線画では同じ品質値でも見た
目が異なるため、最初の1件だけでなく複数を確認してください。

## プライバシー、キャンセル、上限を確認する

ローカル処理では、端末上のブラウザーAPIが選択ファイルをデコード・
エンコードします。現在のビルドを確認するには、開発者ツールのNetworkを
空にし、固有名のコピーを選択して処理し、その名前やバイトを含む通信が
ないことを確認します。これは確認したビルドの証拠であり、将来の全変更を
保証するものではありません。

大きな処理をキャンセルし、再開できる安定した状態へ戻ることも確認します。
アニメーションが拒否されること、コーデック非対応時にエラーになることも
確認します。失敗したデータの拡張子だけを変えてはいけません。

圧縮ファイルはデコード後に大きなメモリを使う場合があります。50 MiBの
入力上限に加え、端末に応じたラスタ面積と累積ピクセル上限があります。
巨大画像、RAW、高ビット深度、カラーマネージド印刷、保存用マスターには
デスクトップ編集環境を使います。

## 最終チェック

- 元ファイルを残す。
- 見た目なら品質、バイト上限なら目標を選ぶ。
- 達成・未達メッセージを読む。
- 寸法、透明度、形式、実サイズを確認する。
- 必要ならメタデータを別途検査する。
- アニメーションを誤って静止画化しない。
- 代表画像を実際のブラウザーと提出先で再確認する。

切り抜き、リサイズ、回転には専用の編集ツールを使い、目標サイズモードが
寸法を無断で変えるとは考えないでください。プライバシーの仕組みは
[ブラウザー内ローカル処理](/ja/blog/browser-file-processing/)を参照してください。

## 参照資料

- WHATWG *HTML Standard*：canvasシリアライズと`convertToBlob()`。
- WHATWG *HTML Standard*：`ImageBitmap`と`createImageBitmap()`。
- W3C *Portable Network Graphics (PNG) Specification, Third Edition*。
- Google *WebP Container Specification*。
