可逆トランスコーディング:BMPからPNGへの高精度変換技術
写真のように多少の不可逆圧縮が許容される画像であればBMPからJPEGへの変換が適していますが、UI画面のスクリーンショット、2Dゲームのピクセルアート(ドット絵)、CAD設計図、回路図面、あるいは医療診断画像などでは、「1ピクセルたりとも改変されない完全な可逆性」が絶対条件となります。非可逆圧縮のJPEGでは文字や境界線の周りに「モアレ(リンギングノイズ)」やブロックノイズが生じてしまいますが、PNG(Portable Network Graphics)形式であれば、Deflate圧縮と適応型差分フィルタリングにより、元のビットマップの生データを100%完全な同一性を維持したまま大幅に軽量化できます。
バイナリ変換メカニズム:DIB配列からPNGチャンク構造への展開
非圧縮のWindows DIBビットマップを標準PNGバイトストリームへ変換する際、ブラウザ内エンジンは以下の厳密なパイプラインを処理します。
- 1. DIBヘッダーおよびビットフィールドの解析: BITMAPINFOHEADERの構造体を解析し、ピクセル深度(1、4、8、16、24、32ビット)を判定します。16ビットや32ビットで
BI_BITFIELDSが指定されている場合は、RGB各チャンネルのビットマスク(5-6-5形式や8-8-8-8形式)を解読して正しい色情報を抽出します。 - 2. ボトムアップ走査線の反転とパディング除去: BMP標準の上下反転(ボトムアップ)配置を読み取り、通常のトップダウン走査線へと反転整列します。また、各行の末尾に存在する4バイト境界アライメント用のダミーパディングバイトを正確に除去し、連続した純粋ピクセルバッファを構築します。
- 3. PNG適応型スキャンラインフィルタリング: ピクセルデータを圧縮する前処理として、水平行ごとに最適な差分フィルタを適用します:
フィルタ0(None):生のピクセル値をそのまま出力。フィルタ1(Sub):左隣のピクセルとの差分を記録。フィルタ2(Up):直上の行の対応ピクセルとの差分を記録。フィルタ3(Average):左と上のピクセルの平均値との差分を計算。フィルタ4(Paeth):左・上・左上の3ピクセルから線形予測器(Paethアルゴリズム)を用いて差分を最小化。
- 4. Deflate可逆エントロピー圧縮(IDATチャンク): 差分フィルタによって数値の大半が0付近に集約されたデータに対し、LZ77スライディングウィンドウ辞書符号化とハフマン符号化を組み合わせたDeflate圧縮を実行します。これにより、画質劣化ゼロのまま容量を50%〜80%削減したIDATチャンクが完成します。
BMPとPNGの技術仕様比較表
| 技術項目 | BMP(Windows Bitmap / DIB) | PNG(Portable Network Graphics) |
|---|---|---|
| 圧縮テクノロジー | 非圧縮(BI_RGB)またはレガシーなRLE | 2段階可逆フィルタリング+Deflate圧縮 |
| 再現精度 | 100% ビット完全(生のラスター) | 100% ビット完全(数学的に完全同一) |
| 透過アルファ対応 | 極めて限定的(32ビット一部環境のみ) | 標準的な8ビット/16ビットアルファチャンネル |
| 容量効率 | 極めて非効率(1ピクセルあたり3〜4バイト消費) | 高効率(BMPより50%〜80%軽量化) |
| 現代エコシステム | WebブラウザやFigma等では標準未対応 | Web、Figma、iOS、Android等で完全標準 |
BMPからPNGへの変換が必須となる専門的ユースケース
実務においてJPGではなくPNG形式への変換を選択すべき代表的なシチュエーションには以下があります。
- ドット絵・ピクセルアート・ゲーム開発: AsepriteやレガシーなWindowsグラフィックツールで作成されたゲームスプライトやマップチップはBMPで保存されることがあります。PNGへ変換すれば、隣接ピクセルの色が滲むことなくクッキリした輪郭を保持できます。
- CAD設計図・電子回路図・技術図面: AutoCADやCADツールから出力された回路パターンや極細の寸法線、英数字の注釈は、わずかな圧縮ノイズでも判読ミスに直結します。完全可逆なPNGであれば、拡大しても細線が美しく保たれます。
- UIデザイン・操作マニュアル用キャプチャ: ソフトウェアのメニューやフォントのアンチエイリアスを忠実に記録したい場合、PNG形式が必須です。マニュアルやWebドキュメントに貼り付けても文字のにじみが発生しません。
- 学術研究・病理顕微鏡画像: 微小な細胞数の計測や金属組織の解析を行う研究分野では、画像処理アルゴリズムの解析精度に影響を与えるため、非可逆圧縮は厳禁です。生データと等価なPNG形式が公式フォーマットとして活用されます。