Windowsの可逆画像圧縮:LocalFluxの「検証済みロスレス」とは
Windowsの検証済み可逆画像圧縮を、92%小さくなったGIF、完全コピーになったPNG、LocalFlux 1.0.7の実測データで解説します。
この記事の内容
内容を変えずに画像ファイルを小さくしたい場合、単にロスレスという設定を選ぶだけでは十分ではありません。新しいファイルが同じ内容を表していることを確認し、同一性を証明できないときに安全な判断をする必要があります。
LocalFlux 1.0.7は安全側に倒す方式を採用しています。PC上で最適化候補を作成し、形式ごとの内容とメタデータの条件を検証します。変更後の候補を公開するのは、検証に合格し、かつ元より小さい場合だけです。検証できない場合や小さくならない場合は、元ファイルを完全にコピーし、_optimized付きの新しい出力として保存します。
C:\tmpに置いた合成ファイルで両方の結果を確認しました。
- 冗長性を持たせた12フレームのGIFは、658,785バイトから54,329バイトになり、**604,456バイト(91.8%)**削減されました。12フレームすべての描画結果と遅延値が一致しました。
- すでに最適化済みのPNGは8,290バイトのままでした。入力と出力のSHA-256が同一で、バイト単位の完全コピーでした。
これは2つの動作を示すために作った合成ファイルの実測値です。一般的な画像で同じ削減率になることを保証するものではありません。
すぐに試す手順
- LocalFluxを開き、圧縮を選びます。
- 対応するJPEG、TIFF、静止PNG/WebP、GIF、APNG、SVGを追加します。
- オプションを開き、ロスレスを選びます。
- 最適化を実行します。
- 各行でロスレス確認済みと、削減結果または最適化済みを確認します。
LocalFluxは元ファイルを残し、_optimized付きの新しいファイルを作成します。処理はWindows PC上で実行され、Web変換サービスへファイルをアップロードしません。

「検証済みロスレス」の意味
変更された候補は、次の3条件を満たす必要があります。
- 形式に応じた内容検証に合格すること。デコード後のピクセル、TIFFの全ページ、アニメーションの全描画フレーム、タイミング、寸法などが対象です。
- その処理ルートで保持対象となる埋め込みメタデータが維持されること。
- 候補が実際に元ファイルより小さいこと。
どれか1つでも満たさない場合、変更された候補は採用されません。LocalFluxは出力先に元のバイト列を復元し、最適化済みと表示します。見た目が同じように見える未証明の変更より、完全コピーを優先します。
形式ごとの検証内容
| 形式 | LocalFlux 1.0.7での主な検証 |
|---|---|
| JPEG | デコード後のピクセル署名とAPP/COMメタデータ。値の一致を証明できなければ完全コピーになります。 |
| 静止PNG | ピクセルと、対応する色・EXIF・XMP・テキスト・物理解像度メタデータ。 |
| 静止WebP | デコード後のピクセルと対応メタデータチャンク。 |
| TIFF | 全ページ、ピクセル、ページ形状、対応タグ。未確認タグがある場合は完全コピーを選びます。 |
| GIF | 合成後の全描画フレーム、遅延、ループ回数、保持対象の拡張ブロック。 |
| APNG | フレームごとの正規化ハッシュ、タイミング、フレーム数、ループ、PNGメタデータ。 |
| SVG | ロスレスモードではバイト単位でコピーします。 |
ここでの「検証済み」は、明示された条件を確認したという意味です。あらゆるコンテナのすべての性質を無制限に証明するという意味ではありません。
個人情報を使わないテスト環境
Microsoft Storeで公開されているLocalFlux 1.0.7.0を使用しました。個人写真、顧客ファイル、ユーザー名を含むフォルダーは使っていません。画面に見えるパスはすべて次で始まります。
C:\tmp\LocalFlux-lossless-proof-v107\input
GIFには、1920 × 1080の同一フルフレームを12枚入れています。これは意図的な構成です。期待する描画内容を明確にしたまま、フレーム間最適化で大きな削減が可能なケースを作れます。小さなPNGは削減できない場合の対照データです。
LocalFluxで実行する
ファイルを追加し、圧縮モードを確認してオプションを開きます。ロスレスを選ぶと、実行ボタンが最適化に変わります。
このテストでは安全に共有をオフにします。目的が異なるためです。
- ロスレスは、対応する内容とメタデータの保持を目指します。
- 安全に共有は、共有用コピーから個人メタデータを意図的に削除します。
出力が元と同じ場所の場合、新しいファイルは入力の隣に保存されます。たとえばimage.pngからimage_optimized.pngが作られます。元ファイルは上書きされませんが、重要なデータには別途バックアップが必要です。
結果1:検証に合格し、小さくなったファイル
| 測定項目 | 入力 | 出力 |
|---|---|---|
| 正確なサイズ | 658,785バイト | 54,329バイト |
| フレーム数 | 12 | 12 |
| 寸法 | 1920 × 1080 | 1920 × 1080 |
| フレーム遅延 | 12個すべて10 | 12個すべて10 |
| 削減 | 該当なし | 604,456バイト(91.8%) |

入力と出力のSHA-256は異なります。圧縮コンテナのバイト配置が変わったためです。これはロスレス検証と矛盾しません。描画後の全フレーム署名は一致しました。ファイルハッシュの違いはバイト表現が変わったことを示し、内容検証は対応するアニメーション条件が保持されたことを示します。
91.8%は一般的なGIFの目安ではありません。同じフルフレームを12回繰り返した、非常に冗長なテストファイルです。
結果2:完全コピーへのフォールバック
8,290バイトのPNGでは、より小さく検証可能な候補が得られませんでした。LocalFluxは次のように表示しました。
ロスレス確認済み · 8.1 KB → 8.1 KB · 最適化済み

入力と出力のSHA-256は同一でした。
F287BBCE8EB98A9F19416DCE1A74A759F3AC8DDA69ADB338022CB1B8F90BD937
したがって出力は完全コピーです。最適化済みは失敗ではありません。検証に合格する、より小さな表現がなかったという安全な完了結果です。
プリセット、目標サイズ、ロスレスの違い
| 方法 | 主な目的 |
|---|---|
| プリセット | 見た目の品質とサイズを調整します。形式や設定により内容を意図的に変える場合があります。 |
| 目標サイズ | 品質や寸法を調整し、指定バイト数以下を試みます。達成できない場合もあります。 |
| ロスレス | 検証に合格した変更だけを公開します。完全コピーも正しい結果です。 |
Web配信用コピーで見た目の調整を許容できるならプリセット、アップロード上限には目標サイズ、検証済みの保持を最優先するならロスレスを選びます。
公開している検証資料
よくある質問
すべてのファイルが小さくなりますか?
いいえ。小さく検証可能な候補がない場合、最適化済みとして完全コピーが作成されます。
元ファイルは上書きされますか?
このテスト手順では上書きされません。新しい_optimizedファイルが作られます。
EXIFや位置情報は削除されますか?
ロスレスは保持を目的とします。個人メタデータを削除する場合は安全に共有を使い、公開前に実際のファイルを確認してください。
オフラインで動作しますか?
対応する最適化はPC上で実行され、変換サーバーへ入力を送信しません。Microsoft Storeのインストール、ライセンス、更新にはネットワークが使われる場合があります。
まとめ
LocalFlux 1.0.7のテストでは、合成GIFが検証対象のアニメーション条件を保ったまま91.8%小さくなりました。すでに効率的なPNGは0%削減で完全コピーになりました。どちらも正しい結果です。一方は冗長性を削減し、もう一方は不要または未証明の変更を拒否しています。
変換前後の実用的な確認
信頼できる手順では、可逆を見た目が似ているだけでなく復号ピクセルが同一と定義し、形式、寸法、アルファ、メタデータ方針、必要ならハッシュを比較する。拡張子を変えるだけでは、元ファイルのすべての性質は保持されません。受け取り先の要件を決め、元ファイルをマスターとして残し、大量処理の前に代表的な1ファイルで試してください。
開始前
- 元形式と受け取り先で重要な性質を記録する。
- 実際に使う閲覧ソフト、編集ソフト、機器、アップロード先に合わせて設定する。
- 新しい出力フォルダーと衝突しないファイル名を使う。
- 実際の受け取り側ソフトで結果を開く。
- 内容、寸法または長さ、保持・削除予定のメタデータを比較する。
出力の確認
完了表示は出力が書き込まれたことを示すだけです。フォント、フレーム、チャンネル、ページ、数式、プロファイル、タグ、アクセシビリティ機能がすべて残った証明ではありません。重要な用途では代表的な出力を確認し、納品物が受け入れられるまで元ファイルを保持してください。