ファイル形式

BMP - Windows ビットマップ画像

BMP は Microsoft のプレーンなビットマップ形式で、画面に表示されるピクセルをほぼそのまま、圧縮なしで保存するため、ファイルは非常にシンプルですが非常に大きくなります。

.bmp

BMP は、Microsoft が Windows に組み込んだビットマップ画像形式で、最初期のグラフィカルなバージョンからシステムの一部になっています。これと密接に関連したバリアントが IBM の OS/2 からも提供されました。元々、賢い圧縮を目指した形式ではありません。BMP は、プログラムが画面に表示するピクセルをほぼそのまま書き出し、それをどのように読み取るかを説明する短いヘッダーを付けたものに近い形式です。現在でも、Windows ソフトウェア内部のアイコンやリソース、簡易キャプチャアプリの出力、またはあるプログラムから別のプログラムに画像を受け渡す際の中間形式として BMP ファイルに出会うことがあります。

BMPが画像を保存する仕組み

ほとんど常に非圧縮です。ファイルは、先頭に 2 文字の BM、ファイルサイズ、ピクセルデータの開始位置を含む小さなヘッダーから始まり、その後に画像自体を説明する第 2 のヘッダーが続きます。そこには幅、高さ、ビット深度、色の構成方法が記録されています。その後に任意のパレットが続き、最後にピクセル配列が続きます。ピクセルは 1 画素につき 1 つの値がそのまま格納され、何も削除されません。

2 つの特性がよく人を驚かせます。まず行は通常下から上に格納されるため、ファイル内の最初のピクセルは画像の左下隅になり、各行は 4 バイトの倍数になるようにパディングされます。ビット深度は、2 色を意味する 1 ビットから、4 ビットおよび 8 ビットのパレット、さらに 16、24、32 ビットのフルカラーまであります。4 ビットおよび 8 ビットモード向けにはランレングス圧縮も存在しますが、使われることはまれです。また、32 ビットモードはアルファ透過チャンネルを保持できますが、古いソフトウェアでは無視されることがよくあります。

何も圧縮されないため、サイズは予測しやすい一方で大きくなります。24 ビット BMP は、画像の内容に関係なく 1 ピクセルあたり 3 バイトを必要とするため、小さな JPG に収まる写真でも数 MB から数十 MB になり得ます。その代わり、この形式は読み書きが非常に簡単で、かつロスレスです。つまり、どんな細部も失われません。

BMPが保持するメタデータ

非常にわずかであり、それこそがこの形式について最も重要なポイントです。メタデータとは、ファイル自身に関する説明情報のことで、BMP はその概念が重視される前に設計されました。BMP にはEXIF、IPTC、XMP が一切ありません。そのため、カメラの機種名、撮影者名、キャプション、GPS 座標などを保存しておく場所がありません。作者名フィールドもタイトルもなく、日付フィールドも一切ありません。BMP に関する唯一の日付はファイルシステムが保持するもので、ファイルの外側にあり、ファイルをコピーすると変わります。

レポートで表示できる情報はヘッダーから取得されるもので、画像の履歴ではなく画像そのものを説明する内容になります。

  • 幅、高さ、ビット深度、および行が下から上か上から下かといった情報。
  • 圧縮方式。通常は「なし」です。
  • 水平方向と垂直方向の解像度。一般的なドット毎インチではなく、メートル毎ピクセルとして保存されます。
  • パレットが保持する色数と、そのうち画像が重要とみなす色の数。

1 つだけ本物のプライバシー上の注意点があります。拡張ヘッダーでは ICC カラープロファイルを付加でき、さらに埋め込みではなくリンクとして保持し、画像を保存したマシン上のファイルパスとして記録できます。このパスから、ユーザー名やフォルダ構成が分かってしまう可能性があります。これは一般的ではありませんが、レポートにリンクされたプロファイルが表示された場合、通常は無言なファイルの中に、その人のコンピュータ環境に関する現実の情報が含まれていることになります。

BMPを使うべきとき

BMP が適しているのは、サイズよりも単純さが重要なときです。最小限のデコーダしか持たないプログラムやデバイスに画像を渡すとき、BMP を想定している Windows ソフトウェアの内部で作業するとき、ある処理工程から次の工程へ画像を受け渡す際に、再圧縮するだけ無駄な場合などです。ロスレス形式なので、画質を劣化させることなく何度でも上書き保存できます。

保存、送信、公開する用途なら、PNG の方が適しています。PNG もロスレスなのでピクセルは同一のまま戻ってきますが、フィルタ処理と圧縮によってファイルサイズを通常は数分の一にできます。また、タイトル、作者、カラープロファイルも保持できます。写真であれば、JPG や WebP の方がさらに小さくなります。BMP はデフォルトではなく、技術的な理由がある場合に意図的に選択してください。