BMPファイル形式

コンテンツへジャンプ
フリー百科事典『ウィキペディア』より
( BMP ファイル形式からリダイレクト)
Windows ビットマップ
ファイル名拡張子
.bmp.dib
インターネットメディアの種類image/bmp[ 1 ]
image/x-bmp
タイプコード'BMP '
'BMPf'
'BMPp'
統一型識別子(UTI)com.microsoft.bmp
開発者マイクロソフト株式会社
フォーマットの種類ラスターグラフィック
オープンフォーマット?WMFOSP

BMPファイル形式ビットマップ)は、特にMicrosoft Windows [ 2 ]OS/2 [ 3 ]オペレーティングシステム上で、ディスプレイデバイス(グラフィックスアダプタなどに依存せずにビット マップデジタル画像保存するために使用されるラスターグラフィック画像ファイル形式です。

BMPファイル形式は、様々な色深度で2次元デジタル画像を保存することができ、オプションでデータ圧縮アルファチャンネルカラープロファイルも利用できます。Windowsメタファイル(WMF)仕様はBMPファイル形式をカバーしています。[ 4 ]

デバイスに依存しないビットマップとBMPファイル形式

[編集]
図1 – ビットマップ画像ファイルの構造
図1 – ビットマップ画像ファイルの構造

Microsoftは、様々な内部表現を持つデバイスやアプリケーション間でビットマップを交換できるように、異なる色深度のカラービットマップの特定の表現を定義しました。Microsoftはこれをデバイス非依存ビットマップ(DIB)と呼び、そのファイル形式はDIBファイル形式またはBMP画像ファイル形式と呼ばれます。

マイクロソフトのサポートによると: [ 5 ]

デバイス非依存ビットマップ(DIB)は、様々な色解像度でデバイス非依存ビットマップを定義するために使用される形式です。DIBの主な目的は、ビットマップをあるデバイスから別のデバイスに移動できるようにすることです(そのため、名前に「デバイス非依存」という部分があります)。DIBは外部形式であり、デバイス依存ビットマップとは対照的です。デバイス依存ビットマップは、システム内でビットマップオブジェクト(アプリケーションによって作成されます)として表示されます。DIBは通常、メタファイル(通常はStretchDIBits()関数を使用)、BMPファイル、およびクリップボード(CF_DIBデータ形式)で転送されます。

以下のセクションでは、BMPファイルまたはDIBファイルに格納されるデータについて詳しく説明します。これは標準的なBMPファイル形式です。[ 5 ]一部のアプリケーションは、Microsoftのドキュメントに準拠していないビットマップ画像ファイルを作成します。また、すべてのフィールドが使用されるわけではなく、未使用のフィールドには0という値が設定されます。

ファイル構造

[編集]

ビットマップ画像ファイルは、固定サイズの構造体(ヘッダー)と、所定の順序で出現する可変サイズの構造体で構成されています。このファイル形式の長年にわたる進化により、これらの構造体の一部には、ファイル内に複数の異なるバージョンが存在する場合があります。

図 1 を参照すると、ビットマップ ファイルは次の順序の構造で構成されています。

構造名オプションサイズ(バイト)目的コメント
ビットマップファイルヘッダーいいえ14一般情報ファイルがメモリにロードされた後は必要ありません
DIBヘッダーいいえ固定サイズ
(7つの異なるバージョンが存在)
詳細情報とピクセル形式ビットマップファイルのヘッダーの直後
追加ビットマスクはい12または16ピクセル形式DIB ヘッダーがBITMAPINFOHEADERであり、圧縮方法メンバーが BI_BITFIELDS または BI_ALPHABITFIELDS のいずれかに設定されている 場合にのみ存在します。
カラーテーブル状況によります様々色(ピクセル配列)色深度≤8ビットの場合は必須
ギャップ1はい様々構造のアライメントビットマップファイルヘッダーのピクセル配列に対するファイルオフセットのアーティファクト
ピクセル配列いいえ様々ピクセル値ピクセルフォーマットはDIBヘッダーまたは追加ビットマスクによって定義されます。ピクセル配列の各行は4バイトの倍数のサイズにパディングされます。
ギャップ2はい様々構造のアライメントDIBヘッダーのICCプロファイルデータオフセットフィールドのアーティファクト
ICCカラープロファイルはい様々カラープロファイル(カラー管理用)カラープロファイルを含む外部ファイルへのパスも格納できます。「非パックDIB」としてメモリにロードされた場合、カラーテーブルとGap1の間に配置されます。[ 6 ]

メモリ内のDIB

[編集]

メモリにロードされたビットマップイメージファイルは、Windows GDI API の重要なコンポーネントである DIB データ構造になります。メモリ内の DIB データ構造は BMP ファイル形式とほぼ同じですが、14 バイトのビットマップファイルヘッダーが含まれず、DIB ヘッダーから始まります。メモリにロードされた DIB の場合、カラーテーブルは、明示的な RGB カラー定義の代わりに、現在実現されているパレット[ 7 ] (追加の間接レベル) へのインデックスを構成する 16 ビットエントリで構成することもできます。すべてのケースで、ピクセル配列は 4 バイトの倍数のメモリアドレスから始まる必要があります。メモリにロードされた非パック DIB では、オプションのカラープロファイルデータは、カラーテーブルの直後、gap1 とピクセル配列[ 6 ]の前に配置する必要があります(図 1 とは異なります)。

gap1とgap2のサイズが0の場合、メモリ内のDIBデータ構造は慣例的に「パックDIB」と呼ばれ、DIBヘッダーの先頭を指す単一のポインタで参照できます。いずれの場合も、ピクセル配列は4バイトの倍数のメモリアドレスから始まる必要があります。場合によっては、ピクセル配列のメモリアドレスを4バイトの倍数にするために、カラーテーブルのエントリ数を調整する必要があるかもしれません。[ 7 ] メモリにロードされた「パックDIB」の場合、図1(gap1=0、gap2=0)に示すように、オプションのカラープロファイルデータはピクセル配列の直後に続く必要があります。[ 6 ] 「パックDIB」は、 WindowsのクリップボードAPI関数、および一部のWindowsパターンブラシおよびリソース関数
で必要です。 [ 8 ]

ビットマップファイルヘッダー

[編集]

このバイトブロックはファイルの先頭にあり、ファイルを識別するために使用されます。一般的なアプリケーションは、まずこのブロックを読み取り、ファイルが実際にBMPファイルであり、破損していないことを確認します。BMPファイル形式の最初の2バイトは、ASCIIエンコードで「B」文字と「M」文字で構成されます。すべての整数値はリトルエンディアン形式(つまり、最下位バイトが先頭)で保存されます。

オフセット(バイト)サイズ(バイト)説明
02BMPファイルとDIBファイルを識別するために使用されるヘッダーフィールドは、ASCIIと同様に16進数で表されます以下エントリ0x42 0x4D可能です。BM
BM
Windows 3.1x、95、NT、... など
学士
OS/2 構造体ビットマップ配列
CI
OS/2 構造体カラーアイコン
CP
OS/2 定数カラーポインタ
IC
OS/2 構造体アイコン
PT
OS/2 ポインタ
24BMPファイルのサイズ(バイト単位)
62予約済み。実際の値はイメージを作成するアプリケーションによって異なります。手動で作成した場合は 0 になります。
82予約済み。実際の値はイメージを作成するアプリケーションによって異なります。手動で作成した場合は 0 になります。
104ビットマップ画像データ (ピクセル配列) が見つかるバイトのオフセット、つまり開始アドレス。

DIBヘッダー(ビットマップ情報ヘッダー)

[編集]

このバイト ブロックは、画面に画像を表示するために使用される画像の詳細情報をアプリケーションに伝えます。 このブロックは、Windows および OS/2 が内部的に使用するヘッダーにも一致し、いくつかの異なるバリアントがあります。 すべてにサイズを指定する dword (32 ビット) フィールドが含まれているため、アプリケーションは、画像でどのヘッダーが使用されているかを簡単に判断できます。 異なるヘッダーが存在する理由は、Microsoft が DIB 形式を何度も拡張したためです。 新しい拡張ヘッダーは、古いヘッダーの代わりに一部の GDI 関数と共に使用できるため、より多くの機能を提供できます。 GDI はビットマップ ファイルをロードする機能をサポートしているため、一般的な Windows アプリケーションはその機能を使用します。 この結果、このようなアプリケーションでは、サポートされる BMP 形式が、実行されている Windows バージョンでサポートされている形式と一致します。 詳細については、下の表を参照してください。

Windows および OS/2 ビットマップ ヘッダー
サイズ(バイト)ヘッダー名OSサポート特徴著者
12ビットマップコアヘッダーOS21Xビットマップヘッダー
Windows 2.0以降
OS/2 1.x [ 3 ]
64OS22XビットマップヘッダーOS/2 ビットマップコアヘッダー2ハーフトーン処理追加します。RLEおよびHuffman 1D 圧縮を追加します。
16OS22Xビットマップヘッダー前のヘッダーのこの変種には最初の16バイトのみが含まれ、残りのバイトはゼロ値であると想定されます。[ 3 ]

一例としては、BMPスイートのグラフィックpal8os2v2-16.bmp [ 9 ]が挙げられます。 [ 10 ]

40ビットマップヘッダーWindows NT 3.1x以降[ 2 ]ビットマップの幅と高さを4バイトに拡張します。16 bppと32 bppのフォーマットを追加します。RLE圧縮を追加します。
52ビットマップV2情報ヘッダー文書化されていないRGB ビットマスクを追加します。マイクロソフト
56ビットマップV3情報ヘッダー公式文書ではありませんが、この文書はAdobeのフォーラムに投稿されました。Adobeの従業員によって、この標準は過去のある時点で公式MS文書に含まれていたという声明が出されました[ 11 ]アルファ チャネルビット マスクを追加しますマイクロソフト
108ビットマップV4ヘッダーWindows NT 4.0、95以降カラースペースタイプとガンマ補正を追加
124ビットマップV5ヘッダーWindows NT 5.0、98以降ICCカラープロファイルを追加GIMP
オフセット(バイト)サイズ(バイト)OS/2 1.xビットマップコアヘッダー[ 3 ]
144このヘッダーのサイズ(12バイト)
182ビットマップの幅(ピクセル単位、符号なし16ビット)
202ビットマップの高さ(ピクセル単位、符号なし16ビット)
222カラープレーンの数は1である必要があります
242ピクセルあたりのビット数
OS/2 1.x ビットマップは圧縮されていないため、16 bpp または 32 bpp にすることはできません。

Windows 2.xのBITMAPCOREHEADERは、OS/2 1.xのBITMAPCOREHEADER(上の表参照)と、画像の幅と高さのフィールドが符号なし整数ではなく符号付き整数であるという点で異なります。[ 12 ]

BITMAPINFOHEADER以降のバージョンでは、以前のバージョンのヘッダーの末尾にのみフィールドが追加されます。たとえば、BITMAPV2INFOHEADER はBITMAPINFOHEADERにフィールドを追加しBITMAPV3INFOHEADER はBITMAPV2INFOHEADERにフィールドを追加します

統合アルファチャンネルは、文書化されていないBITMAPV3INFOHEADERと、文書化されているBITMAPV4HEADERWindows 95以降)で導入され、Windows XPのログオンおよびテーマシステム、およびMicrosoft Office(バージョン2000以降)で使用されています。また、Adobe Photoshopバージョン7以降、Adobe FlashバージョンMX 2004(当時はMacromedia Flashとして知られていました)以降など、一部の画像編集ソフトウェアでもサポートされています。GIMP Google ChromeMicrosoft PowerPoint Microsoft Wordでもサポートされています

互換性のため、ほとんどのアプリケーションはファイルの保存に古いDIBヘッダーを使用しています。Windows 2000以降、OS/2はサポートされなくなったため、現在Windowsで一般的な形式はBITMAPINFOHEADERヘッダーです。説明については次の表をご覧ください。特に明記されていない限り、すべての値は符号なし整数として保存されます。

オフセット(バイト)サイズ(バイト)Windows BITMAPINFOHEADER [ 2 ]
144このヘッダーのサイズ(バイト単位)(40)
184ビットマップの幅(ピクセル単位、符号付き整数)
224ビットマップの高さ(ピクセル単位、符号付き整数)
262カラープレーンの数(1である必要があります)
282ピクセルあたりのビット数、つまり画像の色深度。一般的な値は1、4、8、16、24、32です。
304使用されている圧縮方法。可能な値のリストについては次の表を参照してください。
344画像サイズ。これは生のビットマップデータのサイズです。BI_RGBビットマップの場合はダミーの0を指定できます。
384画像の水平解像度。(1メートルあたりのピクセル数、符号付き整数)
424画像の垂直解像度。(1メートルあたりのピクセル数、符号付き整数)
464カラーパレット内の色の数、または 0 の場合はデフォルトで 2 nになります
504使用されている重要な色の数。すべての色が重要な場合は 0。通常は無視されます。

圧縮方法 (オフセット 30) は次のようになります。

価値識別者圧縮方法コメント
0BI_RGBなし最も一般的な
1BI_RLE8RLE 8ビット/ピクセル8ビット/ピクセルのビットマップでのみ使用可能
2BI_RLE4RLE 4ビット/ピクセル4ビット/ピクセルのビットマップでのみ使用可能
3BI_ビットフィールドOS22XBITMAPHEADER : ハフマン 1DBITMAPV2INFOHEADER : RGBビットフィールドマスク、BITMAPV3INFOHEADER + : RGBA
4BI_JPEGOS22Xビットマップヘッダー: RLE-24BITMAPV4INFOHEADER + :印刷用JPEG画像[ 13 ]
5BI_PNGBITMAPV4INFOHEADER + :印刷用PNG画像[ 13 ]
6BI_アルファベットフィールドRGBAビットフィールドマスク.NET 4.0 以降を搭載したWindows CE 5.0のみ
11BI_CMYKなしWindowsメタファイル CMYKのみ[ 4 ]
12BI_CMYKRLE8RLE-8WindowsメタファイルCMYKのみ
13BI_CMYKRLE4RLE-4WindowsメタファイルCMYKのみ

OS/2 2.x OS22XBITMAPHEADERIBMのドキュメントではBITMAPINFOHEADER2 )には24バイトの追加バイトが含まれています: [ 3 ]

オフセット(バイト)サイズ(バイト)OS/2 OS22XBITMAPHEADER ( BITMAPINFOHEADER2 ) [ 3 ]
542水平解像度と垂直解像度(オフセット38と42)の単位を指定する列挙値。定義済みの値は0のみで、これは1メートルあたりのピクセル数を意味します。
562パディング。無視され、ゼロにする必要があります
582ビットマップをビットが埋める方向を示す列挙値。定義済みの値は0のみで、これは原点が左下隅であることを意味します。ビットは左から右へ、そして下から上へと埋められます。

Windows ビットマップ(このフィールドは含まれません)では、画像の高さに負の値を使用して、左上を原点(ビットは左から右、上から下に埋められます)を指定することもできます。

602イメージをレンダリングするときに使用するハーフトーン化アルゴリズムを示す列挙値。
624ハーフトーンパラメータ1(下記参照)
664ハーフトーンパラメータ2(下記参照)
704カラーテーブル内の各エントリのカラーエンコーディングを示す列挙値。定義されている値は0のみで、RGBを表します。
744アプリケーション定義の識別子。画像のレンダリングには使用されません。

ハーフトーン化アルゴリズム (オフセット 60) は次のようになります。

価値ハーフトーンアルゴリズムコメント
0なし最も一般的な
1誤差拡散ハーフトーンパラメータ1(オフセット64)は、誤差減衰のパーセンテージです。100は減衰なしを示します。0は誤差が拡散されないことを示します。
2PANDA: 非コード化文書取得のための処理アルゴリズムハーフトーンパラメータ1と2(それぞれオフセット64と68)は、使用されるハーフトーンパターンのXとYの寸法をピクセル単位で表します。
3スーパーサークルハーフトーンパラメータ1と2(それぞれオフセット64と68)は、使用されるハーフトーンパターンのXとYの寸法をピクセル単位で表します。

カラーテーブル

[編集]

カラーテーブル(パレット)は、BMP画像ファイルにおいて、BMPファイルヘッダー、DIBヘッダー、そしてBI_BITFIELDS(12バイト)またはBI_ALPHABITFIELDS(16バイト)オプション付きのBITMAPINFOHEADERヘッダーが使用されている場合はオプションの3つまたは4つのビットマスクの直後に配置されます。したがって、そのオフセットはBITMAPFILEHEADERのサイズにDIBヘッダーのサイズ(さらに3つまたは4つのビットマスクの場合はオプションの12~16バイト)を加えたサイズになります。注:Windows CEでは、 BITMAPINFOHEADERヘッダーはbiCompressionメンバーのBI_ALPHABITFIELDS [ 14 ]オプションと共に使用できます。

パレットのエントリ数は2 n(nはピクセルあたりのビット数)またはヘッダーで指定されたより小さい数(OS/2 BITMAPCOREHEADERヘッダー形式では、フルサイズパレットのみがサポートされています)です。[ 3 ] [ 5 ]ほとんどの場合、カラーテーブルの各エントリは青、緑、赤、0x00の順で4バイトを占めます(例外については以下を参照)。これはBITMAPINFOHEADER構造体のbiBitCountメンバーでインデックス付けされます。

カラーテーブルは、画像で使用される色をリストするバイトブロック(テーブル)です。インデックス付きカラー画像の各ピクセルは、このテーブルで記述される単一の色のインデックスであるビット数(1、4、または8)で記述されます。インデックス付きカラービットマップのカラーパレットの目的は、各インデックス値が対応する実際の色をアプリケーションに通知することです。インデックスなし(パレット化されていない)ビットマップのカラーテーブルの目的は、ビットマップで使用される色をリストすることです。これにより、色表示能力が制限されているデバイスでの最適化が可能になり、将来的に異なるピクセル形式やパレット化への変換が容易になります。

カラーテーブル内の色は通常、1エントリあたり4バイトのARGB32形式で指定されます。OS/2 BITMAPCOREHEADERで使用されるカラーテーブルは、1エントリあたり3バイトのRGB24形式を使用します。[ 3 ] [ 5 ] メモリにロードされたDIBの場合、カラーテーブルはオプションで2バイトのエントリで構成できます。これらのエントリは、明示的なRGBカラー定義ではなく、現在実現されているパレットへのインデックスとなります[ 7 ]

Microsoftは、1bpp、4bpp、8bppのインデックスカラー画像において、 BITMAPV4HEADERおよびBITMAPV5HEADER有効なアルファチャンネルビットマスク[ 15 ]が存在することを禁止していません。これは、カラーテーブルエントリがRGBQUAD.rgbReserved [ 16 ]メンバーを介して8.8.8.[0-8].[0-8]形式を使用してアルファ成分を指定できることを意味しています。しかし、Microsoftのドキュメントの一部のバージョンでは、RGBQUAD.rgbReservedメンバーは「0でなければならない」と記載されており、この機能は禁止されています。

前述のように、ピクセルが16ビット/ピクセル(16bpp)形式(およびそれ以上)の場合、カラーテーブルは通常使用されません。つまり、これらのビットマップ画像ファイルにはカラーテーブルエントリが存在しないのが通常です。しかし、Microsoftのドキュメント(2010年11月16日現在MSDNウェブサイト上[ 17 ])には、16bpp(およびそれ以上)の場合、カラー表示能力が制限されたデバイスでの最適化を目的とした色のリストを格納するためにカラーテーブルが存在する可能性があると記載されています。一方で、そのような場合には、このカラーテーブルにはインデックス付きパレットエントリは存在しないとも記載されています。必須のパレットエントリとオプションのカラーリストを区別しないと、矛盾しているように見えるかもしれません。

ピクセルストレージ

[編集]

ビットマップのピクセルを表すビットは、行(ストライドまたはスキャンラインとも呼ばれる)にパックされています。各行のサイズは、パディングによって4バイト(32ビットDWORD )の倍数に切り上げられます。 [ 18 ]

高さが 1 を超える画像の場合、複数のパディングされた行が連続して保存され、ピクセル配列が形成されます。

1 行のピクセルを格納するために必要な合計バイト数は次のように計算できます。

ImageWidthはピクセル単位で表されます。上記の式ではfloor関数とceiling関数が使用されています。

2 n色のnビット/ピクセル (bpp) イメージ内のピクセル配列を格納するために必要な合計バイト数は、次のように、各行のサイズを 4 バイトの倍数に切り上げる効果を考慮して計算できます。

ImageHeightはピクセル単位で表されます。トップダウン画像の場合、ImageHeight は負の値で表されるため、絶対値が必要です。

ピクセル配列(ビットマップデータ)

[編集]

ピクセル配列は32ビットのDWORDブロックで、画像をピクセル単位で記述します。通常、ピクセルは「下から上へ」、つまり左下隅から左から右へ、そして画像の下から上へ1行ずつ格納されます。[ 5 ] BITMAPCOREHEADERを使用しない限り、非圧縮のWindowsビットマップは、Image Heightの値が負の場合、上から下へ格納することもできます。

オリジナルのOS/2 DIBでは、色深度の値は1、4、8、24ビット/ピクセル(bpp)の4つだけでした。[ 5 ] 現代のDIBヘッダーでは、1、2、4、8、16、24、32ビット/ピクセル(bpp)のピクセルフォーマットがサポートされています。[ 19 ] GDI+では、64ビット/ピクセルもサポートされています。[ 20 ]

行の長さを 4 バイトの倍数にするために、行の末尾にパディング バイト (必ずしも 0 とは限らない) を追加する必要があります。ピクセル配列がメモリにロードされるとき、各行は 4 の倍数のメモリ アドレスから始まる必要があります。このアドレス/オフセットの制限は、メモリにロードされるピクセル配列に対してのみ必須です。ファイル保存の目的では、各行のサイズのみが 4 バイトの倍数である必要があり、ファイル オフセットは任意にできます。[ 5 ]幅 = 1 の 24 ビット ビットマップには、行 (青、緑、赤) ごとに 3 バイトのデータと 1 バイトのパディングが含まれますが、幅 = 2 には 6 バイトのデータと 2 バイトのパディングが含まれます。幅 = 3 には 9 バイトのデータと 3 バイトのパディングが含まれます。幅 = 4 には 12 バイトのデータがあり、パディングはありません。

圧縮

[編集]
  • インデックス付きカラー画像は、4 ビットまたは 8 ビットのRLEまたはHuffman 1D アルゴリズムを使用して圧縮できます。
  • OS/2 BITMAPCOREHEADER 2 24bpp画像は 24 ビット RLE アルゴリズムで圧縮できます。
  • 16bppおよび32bpp の画像常に圧縮されずに保存されます。
  • 必要に応じて、すべての色深度の画像を圧縮せずに保存できることに注意してください。

ピクセル形式

[編集]
  • 1ビット/ピクセル(1bpp)形式は、2つの異なる色(例えば、黒と白)をサポートします。ピクセル値は各ビットに格納され、最初の(左端の)ピクセルは最初のバイトの最上位ビットに格納されます。[ 5 ]各ビットは2色のテーブルへのインデックスです。設定されていないビットは最初のカラーテーブルエントリを参照し、設定されているビットは最後の(2番目の)カラーテーブルエントリを参照します。
  • 2ビット/ピクセル(2bpp)形式は4つの異なる色をサポートし、1バイトあたり4つのピクセルを格納します。左端のピクセルは最上位2ビットに格納されます(Windows CEのみ:[ 21 ])。各ピクセル値は、最大4色のテーブルへの2ビットのインデックスです。
  • 4ビット/ピクセル(4bpp)形式は16の異なる色をサポートし、1バイトあたり2ピクセルを格納します。左端のピクセルはより重要なニブルにあります。[ 5 ] 各ピクセル値は最大16色のテーブルへの4ビットのインデックスです。
  • 8ビット/ピクセル(8bpp)形式は256色をサポートし、1バイトあたり1ピクセルを格納します。各バイトは最大256色のテーブルへのインデックスです。
  • 1ピクセルあたり16ビット(16bpp)フォーマットは、65536色をサポートし、2バイトのWORDごとに1ピクセルを格納します。各WORDは、ピクセルのアルファ、赤、緑、青のサンプルを定義できます。
  • 24ビット/ピクセル(24bpp)形式は、16,777,216色をサポートし、3バイトごとに1つのピクセル値を保存します。各ピクセル値は、ピクセルの赤、緑、青のサンプル(RGBAX表記では8.8.8.0.0)を定義します。具体的には、青、緑、赤の順(各サンプルあたり8ビット)です。[ 5 ]
  • 32ビット/ピクセル(32bpp)形式は、4,294,967,296色をサポートし、4バイトのDWORD値ごとに1ピクセルを格納します。各DWORD値は、ピクセルのアルファ、赤、緑、青のサンプルを定義できます。

どのビットがどのサンプルを定義するかという曖昧さを解決するために、DIBヘッダーは特定のデフォルトと、ピクセル内の特定のビットグループが特定のチャネルに属することを定義するビットマスクであるビットフィールドを提供します。次の図は、このメカニズムを定義しています。

図2 – RGBAXサンプル長表記で表現された32ビットピクセルのBITFIELDSメカニズム
図2 – RGBAXサンプル長表記で表現された32ビットピクセルのBITFIELDSメカニズム

BITFIELDSビットマスクで定義されるサンプルフィールドは連続しており、重複してはなりませんが、サンプルフィールドの順序は任意です。最も一般的なフィールド順序は、アルファ、青、緑、赤(MSBからLSB)です。赤、緑、青のビットマスクは、DIBヘッダーのCompressionメンバーがBI_BITFIELDSに設定されている場合にのみ有効です。アルファビットマスクは、DIBヘッダー内に存在する場合、またはDIBヘッダーのCompressionメンバーがBI_ALPHABITFIELDS [ 14 ]に設定されている場合にのみ有効です(Windows CEのみ)。

図3 – Adob​​e Photoshopで実際に生成された16ビットピクセル(RGBAXサンプル長表記)のアルファチャンネル付きピクセルフォーマット[22]
図3 – Adob​​e Photoshopで実際に生成された16ビットピクセル(RGBAXサンプル長表記)のアルファチャンネル付きピクセルフォーマット[ 22 ]
DIBで可能なすべてのピクセル形式
DIBで可能なすべてのピクセル形式

RGBビデオのサブタイプ

[編集]

上で説明したBITFIELDメカニズムは、数万種類の異なるピクセル形式の定義を可能にしますが、実際に使用されるのはそのうちのいくつかだけです。[ 22 ] RGB8、RGB4、RGB1(上記の表で黄色でマークされ、dshow.h.MEDIASUBTYPE名で定義されています)のすべてのパレット形式は次のとおりです。

非圧縮RGBビデオのサブタイプ[ 23 ]
RGBAXRGBサブタイプRGBAXARGBサブタイプ
8.8.8.0.8RGB328.8.8.8.0ARGB32
10.10.10.2.0A2R10G10B10
8.8.8.0.0RGB2410.10.10.2.0A2B10G10R10
5.6.5.0.0RGB5654.4.4.4.0ARGB4444
5.5.5.0.1RGB5555.5.5.1.0ARGB1555
RGB10ビットのビットフィールド[ 23 ]
ビットフィールドオフセット

(16進数)

ビットA2R10G10B10ビットA2B10G10R10
3600 00 F0 3Fル: 3FF0000020...29FF 03 00 00ル: 000003FF 0... 9
3A00 FC 0F 00ル: 000FFC0010...1900 FC 0F 00ル: 000FFC0010...19
3EFF 03 00 00ル: 000003FF 0... 900 00 F0 3Fル: 3FF0000020...29
アルファ4200 00 00 C0ル: C000000030...3100 00 00 C0ル: C000000030...31

バージョン2.1.4では、FFmpegは(独自の用語で)BMPピクセル形式bgra、bgr24、rgb565le、rgb555le、rgb444le、rgb8、bgr8、rgb4_byte、bgr4_byte、gray、pal8、monobサポートていました。つまり、bgraは透明性のある唯一のピクセル形式をサポートしていました。[ 24 ]

2×2ピクセルのビットマップ(24ビット/ピクセルエンコード)の例1

例1

[編集]

以下は、ピクセル形式が RGB24 である 2×2 ピクセル、24 ビット ビットマップ (Windows DIB ヘッダーBITMAPINFOHEADER )の例です。

オフセット

(16進数)

サイズ

(バイト)

16進値価値説明
BMPヘッダー
00242 4D「BM」IDフィールド(42h、4Dh)
02446 00 00 0070バイト(54+16)BMPファイルのサイズ(54バイトのヘッダー + 16バイトのデータ)
06200 00未使用アプリケーション固有
08200 00未使用アプリケーション固有
0A436 00 00 0054バイト(14+40)ピクセル配列(ビットマップデータ)が見つかるオフセット
DIBヘッダー
0E428 00 00 0040バイトDIBヘッダーのバイト数(この時点から)
12402 00 00 002ピクセル(左から右の順)ビットマップの幅(ピクセル単位)
16402 00 00 002ピクセル(下から上の順)ビットマップの高さ(ピクセル単位)。下から上のピクセル順の場合は正の値になります。
1A201 001機使用されているカラープレーンの数
1C218時00分24ビットピクセルあたりのビット数
1E400 00 00 000BI_RGB、ピクセル配列圧縮は使用されない
22410 00 00 0016バイト生のビットマップデータのサイズ(パディングを含む)
26413 0B 00 00水平2835ピクセル/メートル画像の印刷解像度は
72DPI ×39.3701インチ/メートルで、2834.6472
2A413 0B 00 002835ピクセル/メートル(縦)
2E400 00 00 000色パレット内の色の数
32400 00 00 00重要な色は0色0はすべての色が重要であることを意味します
ピクセル配列の開始(ビットマップデータ)
36300 00 FF0 0 255赤、ピクセル (x=0, y=1)
393FF FF FF255 255 255白、ピクセル(x=1、y=1)
3C200 000 04バイトのアライメントのためのパディング(ゼロ以外の値になる場合があります)
3E3FF 00 00255 0 0青、ピクセル (x=0, y=0)
41300 FF 000 255 0緑、ピクセル (x=1, y=0)
44200 000 04バイトのアライメントのためのパディング(ゼロ以外の値になる場合があります)
0,0: blue 0000FF FF0,1: green 00FF00 FF0,2: red FF00000 FF0,3: white FFFFFF FF1,0: blue 0000FF 7F, half transparent1,1: green 00FF00 7F, half transparent1,2: red FF0000 7F, half transparent1,3: white FFFFFF 7F, half transparent
4×2ピクセルのビットマップ(32ビット/ピクセルエンコード)の例2

例2

[編集]

以下は、ピクセル形式が ARGB32 で、アルファ チャネルに不透明度値を持つ 4×2 ピクセルの 32 ビット ビットマップ (Windows DIB ヘッダーBITMAPV4HEADER ) の例です。

オフセット

(16進数)

サイズ

(バイト)

16進値価値説明
BMPヘッダー
00242 4D「BM」IDフィールド(42h、4Dh)
0249A 00 00 00154バイト(122+32)BMPファイルのサイズ
06200 00未使用アプリケーション固有
08200 00未使用アプリケーション固有
0A47A 00 00 00122バイト(14+108)ピクセル配列(ビットマップデータ)が見つかるオフセット
DIBヘッダー
0E46C 00 00 00108バイトDIBヘッダーのバイト数(この時点から)
12404 00 00 004ピクセル(左から右の順)ビットマップの幅(ピクセル単位)
16402 00 00 002ピクセル(下から上の順)ビットマップの高さ(ピクセル単位)
1A201 001機使用されているカラープレーンの数
1C220 0032ビットピクセルあたりのビット数
1E403 00 00 003BI_BITFIELDS、ピクセル配列圧縮は使用されない
22420 00 00 0032バイト生のビットマップデータのサイズ(パディングを含む)
26413 0B 00 00水平2835ピクセル/メートル画像の印刷解像度は
72DPI ×39.3701インチ/メートルで、2834.6472
2A413 0B 00 002835ピクセル/メートル(縦)
2E400 00 00 000色パレット内の色の数
32400 00 00 00重要な色は0色0はすべての色が重要であることを意味します
36400 00 FF 00ビッグエンディアンでは00FF0000赤チャンネルのビットマスク(BI_BITFIELDSが指定されているため有効)
3A400 FF 00 00ビッグエンディアンでは0000FF00緑チャネルビットマスク(BI_BITFIELDSが指定されているため有効)
3E4FF 00 00 00ビッグエンディアンでは000000FF青チャンネルのビットマスク(BI_BITFIELDSが指定されているため有効)
42400 00 00 FFビッグエンディアンではFF000000アルファチャンネルビットマスク
46420 6E 69 57リトルエンディアン " Win "LCS_WINDOWS_COLOR_SPACE
4A3600...00CIEXYZTRIPLE カラースペースエンドポイントLCS「Win 」または「sRGB」 では未使用
6E400 00 00 000 レッドガンマLCS「Win 」または「sRGB」 では未使用
72400 00 00 000 グリーンガンマLCS「Win 」または「sRGB」 では未使用
76400 00 00 000 ブルーガンマLCS「Win 」または「sRGB」 では未使用
ピクセル配列の開始(ビットマップデータ)
7A4FF 00 00 7F255 0 0 127青(アルファ:127)、ピクセル(x=0、y=1)
7E400 FF 00 7F0 255 0 127緑(アルファ:127)、ピクセル(x=1、y=1)
82400 00 FF 7F0 0 255 127赤(アルファ:127)、ピクセル(x=2、y=1)
864FF FF FF 7F255 255 255 127白(アルファ:127)、ピクセル(x=3、y=1)
8A4FF 00 00 FF255 0 0 255青(アルファ:255)、ピクセル(x=0、y=0)
8E400 FF 00 FF0 255 0 255緑(アルファ:255)、ピクセル(x=1、y=0)
92400 00 FF FF0 0 255 255赤(アルファ:255)、ピクセル(x=2、y=0)
964FF FF FF FF255 255 255 255白(アルファ:255)、ピクセル(x=3、y=0)

ビットマップ データは画像の左下隅から始まることに注意してください。

BMP形式の使用

[編集]

BMP ファイル形式はシンプルで、Windows をはじめ広く普及しており、また、比較的文書化が進んでおりオープン形式であるという事実から、多くのオペレーティング システムの画像処理プログラムで読み書きできる非常に一般的な形式となっています。ICOファイルと CUR ファイルには、BITMAPINFOHEADER で始まるビットマップが含まれています。

多くの古いグラフィカルユーザーインターフェースは、組み込みのグラフィックスサブシステムでビットマップを使用していました。[ 25 ]たとえば、Microsoft WindowsとOS / 2プラットフォームのGDIサブシステムでは、使用される特定の形式はWindowsとOS / 2のビットマップファイル形式であり、通常はファイル拡張子で命名されています.BMP[ 26 ]

ほとんどのBMPファイルは圧縮されていないため(またはパレット画像では一般的に低圧縮率のランレングス符号化が使用されているため)、ファイルサイズが比較的大きくなりますが、多くのBMPファイルは冗長データを含んでいるため、 ZIPなどのロスレスデータ圧縮アルゴリズムによって大幅に圧縮できます。RARなどの一部の形式では、冗長データの効率的な圧縮に特化したルーチンが組み込まれています。

[編集]

X Window Systemは、白黒画像には同様のXBM形式、カラー画像にはXPMピクセルマップ)形式を使用します。また、生データのみを保存し、その他の情報を含まない「raw」形式も数多く存在します。Portable Pixmap(PPM)形式やTruevision TGA形式も存在しますが、あまり使用されず、特殊な用途でのみ使用されます。例えば、TGA形式は透明度情報を含むことができます。

参考文献

[編集]
  1. ^ 「IANAの考慮事項」 . Windowsイメージメディアタイプ. sec. 5. doi : 10.17487/RFC7903 . RFC 7903 .
  2. ^ a b c James D. Murray、William vanRyper (1996年4月). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly . bmp . ISBN 1-56592-161-5. 2014年3月7日閲覧
  3. ^ a b c d e f g h James D. Murray、William vanRyper (1996年4月). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly . os2bmp . ISBN 1-56592-161-5. 2014年3月7日閲覧
  4. ^ a b "[MS-WMF]: Windowsメタファイル形式" . MSDN . 2014年2月13日. 2014年3月12日閲覧
  5. ^ a b c d e f g h i j 「DIBとその用途」。Microsoftヘルプとサポート。 2015年5月14日閲覧
  6. ^ a b c MSDNビットマップヘッダータイプ
  7. ^ a b c MSDN BITMAPINFO 構造
  8. ^ Feng Yuan - Windows グラフィック プログラミング: Win32 GDI と DirectDraw:パックされたデバイス非依存ビットマップ (CreateDIBPatternBrush、CreateDIBPatternBrushPt、FindResource、LoadResource、LockResource)
  9. ^ Summers, Jason (2015年10月30日). 「pal8os2v2-16.bmp」 . 2016年7月6日閲覧
  10. ^ Summers, Jason (2015年10月30日). 「BMP Suite」 . 2016年7月6日閲覧
  11. ^ Cox, Chris (2010-11-15). 「アルファチャンネル付きの無効なBMP形式」 . Photoshop Windowsフォーラム. Adob​​e . 2015年1月27日時点のオリジナルよりアーカイブ。 2016年5月22日閲覧
  12. ^ 「Microsoft Windows ビットマップ: グラフィックス ファイル形式百科事典からの概要」
  13. ^ a b 「特定のビットマップ関数と構造のための JPEG および PNG 拡張」
  14. ^ a b MSDN - BITMAPINFOHEADER (Windows CE 5.0): biCompression メンバーの BI_ALPHABITFIELDS
  15. ^ MSDN – BITMAPV4HEADER :メンバー bV4AlphaMask
  16. ^ MSDN – RGBQUAD: rgbReserved メンバー
  17. ^ biClrUsed MSDN BITMAPINFOHEADERの注記を参照
  18. ^ 「Image Stride - Win32 アプリ。learn.microsoft.com
  19. ^ MSDN - BITMAPINFOHEADER :メンバー biBitCount
  20. ^ 「ビットマップの種類」 . MSDN . 2012年6月3日. 2014年3月16日閲覧
  21. ^ MSDN: Windows CE - BITMAPINFOHEADER構造
  22. ^ a b Adob​​e Photoshop: BMP形式 Archived 2011-09-22 at the Wayback Machine
  23. ^ a b 「非圧縮RGBビデオサブタイプ」 . dshow.h . MSDN . 2014年3月11日閲覧
  24. ^ 「画像フォーマット」 . FFmpeg一般ドキュメント. 2014年. 2014年2月23日閲覧
  25. ^ Julian Smart、Stefan Csomor、Kevin Hock (2006). 『Wxwidgets によるクロスプラットフォーム GUI プログラミング』 Prentice Hall. ISBN 0-13-147381-6
  26. ^ 「ビットマップイメージファイル(BMP)、バージョン5」デジタル保存米国議会図書館。2014年1月8日。 2014年3月11日閲覧
[編集]
    Windows ビットマップ
    ファイル名拡張子
    .bmp.dib
    インターネットメディアの種類image/bmp[1]
    image/x-bmp
    タイプコード'BMP '
    'BMPf'
    'BMPp'
    統一型識別子(UTI)com.microsoft.bmp
    開発者マイクロソフト株式会社
    フォーマットの種類ラスターグラフィック
    オープンフォーマット?WMFOSP

    BMPファイル形式ビットマップ)は、特にMicrosoft Windows [2]OS/2 [3]オペレーティングシステム上で、ディスプレイデバイス(グラフィックスアダプタなどに依存せずにビット マップデジタル画像保存するために使用されるラスターグラフィックス画像ファイル形式です。

    BMPファイル形式は、様々な色深度で2次元デジタル画像を保存することができ、オプションでデータ圧縮アルファチャンネルカラープロファイルも利用できます。Windowsメタファイル(WMF)仕様はBMPファイル形式をカバーしています。[4]

    デバイスに依存しないビットマップとBMPファイル形式

    図1 – ビットマップ画像ファイルの構造
    図1 – ビットマップ画像ファイルの構造

    Microsoftは、様々な内部表現を持つデバイスやアプリケーション間でビットマップを交換できるように、異なる色深度のカラービットマップの特定の表現を定義しました。Microsoftはこれをデバイス非依存ビットマップ(DIB)と呼び、そのファイル形式はDIBファイル形式またはBMP画像ファイル形式と呼ばれます。

    マイクロソフトのサポートによると: [5]

    デバイス非依存ビットマップ(DIB)は、様々な色解像度でデバイス非依存ビットマップを定義するために使用される形式です。DIBの主な目的は、ビットマップをあるデバイスから別のデバイスに移動できるようにすることです(そのため、名前に「デバイス非依存」という部分があります)。DIBは外部形式であり、デバイス依存ビットマップとは対照的です。デバイス依存ビットマップは、システム内でビットマップオブジェクト(アプリケーションによって作成されます)として表示されます。DIBは通常、メタファイル(通常はStretchDIBits()関数を使用)、BMPファイル、およびクリップボード(CF_DIBデータ形式)で転送されます。

    以下のセクションでは、BMPファイルまたはDIBファイルに格納されるデータについて詳しく説明します。これは標準的なBMPファイル形式です。[5]一部のアプリケーションは、Microsoftのドキュメントに準拠していないビットマップ画像ファイルを作成します。また、すべてのフィールドが使用されるわけではなく、未使用のフィールドには0という値が設定されます。

    ファイル構造

    ビットマップ画像ファイルは、固定サイズの構造体(ヘッダー)と、所定の順序で出現する可変サイズの構造体で構成されています。このファイル形式の長年にわたる進化により、これらの構造体の一部には、ファイル内に複数の異なるバージョンが存在する場合があります。

    図 1 を参照すると、ビットマップ ファイルは次の順序の構造で構成されています。

    構造名オプションサイズ(バイト)目的コメント
    ビットマップファイルヘッダーいいえ14一般情報ファイルがメモリにロードされた後は必要ありません
    DIBヘッダーいいえ固定サイズ
    (7つの異なるバージョンが存在)
    詳細情報とピクセル形式ビットマップファイルのヘッダーの直後
    追加ビットマスクはい12または16ピクセル形式DIB ヘッダーがBITMAPINFOHEADERであり、圧縮方法メンバーが BI_BITFIELDS または BI_ALPHABITFIELDS のいずれかに設定されている 場合にのみ存在します。
    カラーテーブル状況によります様々色(ピクセル配列)色深度≤8ビットの場合は必須
    ギャップ1はい様々構造のアライメントビットマップファイルヘッダーのピクセル配列に対するファイルオフセットのアーティファクト
    ピクセル配列いいえ様々ピクセル値ピクセルフォーマットはDIBヘッダーまたは追加ビットマスクによって定義されます。ピクセル配列の各行は4バイトの倍数のサイズにパディングされます。
    ギャップ2はい様々構造のアライメントDIBヘッダーのICCプロファイルデータオフセットフィールドのアーティファクト
    ICCカラープロファイルはい様々カラープロファイル(カラー管理用)カラープロファイルを含む外部ファイルへのパスも格納できます。「非パックDIB」としてメモリにロードされた場合、カラーテーブルとGap1の間に配置されます。[6]

    メモリ内のDIB

    メモリにロードされたビットマップイメージファイルは、Windows GDI API の重要なコンポーネントである DIB データ構造になります。メモリ内の DIB データ構造は BMP ファイル形式とほぼ同じですが、14 バイトのビットマップファイルヘッダーが含まれず、DIB ヘッダーから始まります。メモリにロードされた DIB の場合、カラーテーブルは、明示的な RGB カラー定義の代わりに、現在実現されているパレット[7] (追加の間接レベル) へのインデックスを構成する 16 ビットエントリで構成することもできます。すべてのケースで、ピクセル配列は 4 バイトの倍数のメモリアドレスから始まる必要があります。メモリにロードされた非パック DIB では、オプションのカラープロファイルデータは、カラーテーブルの直後、gap1 とピクセル配列[6]の前に配置する必要があります(図 1 とは異なります)。

    gap1とgap2のサイズが0の場合、メモリ内のDIBデータ構造は慣例的に「パックDIB」と呼ばれ、DIBヘッダーの先頭を指す単一のポインタで参照できます。いずれの場合も、ピクセル配列は4バイトの倍数のメモリアドレスから始まる必要があります。場合によっては、ピクセル配列のメモリアドレスを4バイトの倍数にするために、カラーテーブルのエントリ数を調整する必要があるかもしれません。[7] メモリにロードされた「パックDIB」の場合、図1(gap1=0、gap2=0)に示すように、オプションのカラープロファイルデータはピクセル配列の直後に続く必要があります。[6] 「パックDIB」は、 WindowsのクリップボードAPI関数、および一部のWindowsパターンブラシおよびリソース関数
    で必要です。 [8]

    ビットマップファイルヘッダー

    このバイトブロックはファイルの先頭にあり、ファイルを識別するために使用されます。一般的なアプリケーションは、まずこのブロックを読み取り、ファイルが実際にBMPファイルであり、破損していないことを確認します。BMPファイル形式の最初の2バイトは、ASCIIエンコードで「B」文字と「M」文字で構成されます。すべての整数値はリトルエンディアン形式(つまり、最下位バイトが先頭)で保存されます。

    オフセット(バイト)サイズ(バイト)説明
    02BMPファイルとDIBファイルを識別するために使用されるヘッダーフィールドは、ASCIIと同様に16進数で表されます以下エントリ0x42 0x4D可能です。BM
    BM
    Windows 3.1x、95、NT、... など
    学士
    OS/2 構造体ビットマップ配列
    CI
    OS/2 構造体カラーアイコン
    CP
    OS/2 定数カラーポインタ
    IC
    OS/2 構造体アイコン
    PT
    OS/2 ポインタ
    24BMPファイルのサイズ(バイト単位)
    62予約済み。実際の値はイメージを作成するアプリケーションによって異なります。手動で作成した場合は 0 になります。
    82予約済み。実際の値はイメージを作成するアプリケーションによって異なります。手動で作成した場合は 0 になります。
    104ビットマップ画像データ (ピクセル配列) が見つかるバイトのオフセット、つまり開始アドレス。

    DIBヘッダー(ビットマップ情報ヘッダー)

    このバイト ブロックは、画面に画像を表示するために使用される画像の詳細情報をアプリケーションに伝えます。 このブロックは、Windows および OS/2 が内部的に使用するヘッダーにも一致し、いくつかの異なるバリアントがあります。 すべてにサイズを指定する dword (32 ビット) フィールドが含まれているため、アプリケーションは、画像でどのヘッダーが使用されているかを簡単に判断できます。 異なるヘッダーが存在する理由は、Microsoft が DIB 形式を何度も拡張したためです。 新しい拡張ヘッダーは、古いヘッダーの代わりに一部の GDI 関数と共に使用できるため、より多くの機能を提供できます。 GDI はビットマップ ファイルをロードする機能をサポートしているため、一般的な Windows アプリケーションはその機能を使用します。 この結果、このようなアプリケーションでは、サポートされる BMP 形式が、実行されている Windows バージョンでサポートされている形式と一致します。 詳細については、下の表を参照してください。

    Windows および OS/2 ビットマップ ヘッダー
    サイズ(バイト)ヘッダー名OSサポート特徴著者
    12ビットマップコアヘッダーOS21Xビットマップヘッダー
    Windows 2.0以降
    OS/2 1.x [3]
    64OS22XビットマップヘッダーOS/2 ビットマップコアヘッダー2ハーフトーン処理追加します。RLEおよびHuffman 1D 圧縮を追加します。
    16OS22Xビットマップヘッダー以前のヘッダーのこの変種には最初の16バイトのみが含まれ、残りのバイトはゼロ値であると想定されます。[3]

    一例としては、BMPスイート[10]のグラフィックpal8os2v2-16.bmp [9]が挙げられます。

    40ビットマップヘッダーWindows NT 3.1x以降[ 2]ビットマップの幅と高さを4バイトに拡張します。16 bppと32 bppのフォーマットを追加します。RLE圧縮を追加します。
    52ビットマップV2情報ヘッダー文書化されていないRGB ビットマスクを追加します。マイクロソフト
    56ビットマップV3情報ヘッダー公式文書ではありませんが、この文書はAdobeのフォーラムに投稿されており、Adobeの従業員が、この標準が過去のある時点で公式MS文書に含まれていたと述べています[11]アルファ チャネルビット マスクを追加しますマイクロソフト
    108ビットマップV4ヘッダーWindows NT 4.0、95以降カラースペースタイプとガンマ補正を追加
    124ビットマップV5ヘッダーWindows NT 5.0、98以降ICCカラープロファイルを追加GIMP
    オフセット(バイト)サイズ(バイト)OS/2 1.xビットマップコアヘッダー[3]
    144このヘッダーのサイズ(12バイト)
    182ビットマップの幅(ピクセル単位、符号なし16ビット)
    202ビットマップの高さ(ピクセル単位、符号なし16ビット)
    222カラープレーンの数は1である必要があります
    242ピクセルあたりのビット数
    OS/2 1.x ビットマップは圧縮されていないため、16 bpp または 32 bpp にすることはできません。

    Windows 2.xのBITMAPCOREHEADERは、OS/2 1.xのBITMAPCOREHEADER(上の表参照)と、画像の幅と高さのフィールドが符号なし整数ではなく符号付き整数であるという点で異なります。[12]

    BITMAPINFOHEADER以降のバージョンでは、以前のバージョンのヘッダーの末尾にのみフィールドが追加されます。たとえば、BITMAPV2INFOHEADER はBITMAPINFOHEADERにフィールドを追加しBITMAPV3INFOHEADER はBITMAPV2INFOHEADERにフィールドを追加します

    統合アルファチャンネルは、文書化されていないBITMAPV3INFOHEADERと、文書化されているBITMAPV4HEADERWindows 95以降)で導入され、Windows XPのログオンおよびテーマシステム、およびMicrosoft Office(バージョン2000以降)で使用されています。また、Adobe Photoshopバージョン7以降、Adobe FlashバージョンMX 2004(当時はMacromedia Flashとして知られていました)以降など、一部の画像編集ソフトウェアでもサポートされています。GIMP Google ChromeMicrosoft PowerPoint Microsoft Wordでもサポートされています

    互換性のため、ほとんどのアプリケーションはファイルの保存に古いDIBヘッダーを使用しています。Windows 2000以降、OS/2はサポートされなくなったため、現在Windowsで一般的な形式はBITMAPINFOHEADERヘッダーです。説明については次の表をご覧ください。特に明記されていない限り、すべての値は符号なし整数として保存されます。

    オフセット(バイト)サイズ(バイト)Windows BITMAPINFOHEADER [2]
    144このヘッダーのサイズ(バイト単位)(40)
    184ビットマップの幅(ピクセル単位、符号付き整数)
    224ビットマップの高さ(ピクセル単位、符号付き整数)
    262カラープレーンの数(1である必要があります)
    282ピクセルあたりのビット数、つまり画像の色深度。一般的な値は1、4、8、16、24、32です。
    304使用されている圧縮方法。可能な値のリストについては次の表を参照してください。
    344画像サイズ。これは生のビットマップデータのサイズです。BI_RGBビットマップの場合はダミーの0を指定できます。
    384画像の水平解像度。(1メートルあたりのピクセル数、符号付き整数)
    424画像の垂直解像度。(1メートルあたりのピクセル数、符号付き整数)
    464カラーパレット内の色の数、または 0 の場合はデフォルトで 2 nになります
    504使用されている重要な色の数。すべての色が重要な場合は 0。通常は無視されます。

    圧縮方法 (オフセット 30) は次のようになります。

    価値識別者圧縮方法コメント
    0BI_RGBなし最も一般的な
    1BI_RLE8RLE 8ビット/ピクセル8ビット/ピクセルのビットマップでのみ使用可能
    2BI_RLE4RLE 4ビット/ピクセル4ビット/ピクセルのビットマップでのみ使用可能
    3BI_ビットフィールドOS22XBITMAPHEADER : ハフマン 1DBITMAPV2INFOHEADER : RGBビットフィールドマスク、BITMAPV3INFOHEADER + : RGBA
    4BI_JPEGOS22Xビットマップヘッダー: RLE-24BITMAPV4INFOHEADER + :印刷用JPEG画像[13]
    5BI_PNGBITMAPV4INFOHEADER + :印刷用PNG画像[13]
    6BI_アルファベットフィールドRGBAビットフィールドマスク.NET 4.0 以降を搭載したWindows CE 5.0のみ
    11BI_CMYKなしWindowsメタファイル CMYKのみ[4]
    12BI_CMYKRLE8RLE-8WindowsメタファイルCMYKのみ
    13BI_CMYKRLE4RLE-4WindowsメタファイルCMYKのみ

    OS/2 2.x OS22XBITMAPHEADERIBMのドキュメントではBITMAPINFOHEADER2 )には24バイトの追加バイトが含まれています。 [3]

    オフセット(バイト)サイズ(バイト)OS/2 OS22XBITMAPHEADER ( BITMAPINFOHEADER2 ) [3]
    542水平解像度と垂直解像度(オフセット38と42)の単位を指定する列挙値。定義済みの値は0のみで、これは1メートルあたりのピクセル数を意味します。
    562パディング。無視され、ゼロにする必要があります
    582ビットマップをビットが埋める方向を示す列挙値。定義済みの値は0のみで、これは原点が左下隅であることを意味します。ビットは左から右へ、そして下から上へと埋められます。

    Windows ビットマップ(このフィールドは含まれません)では、画像の高さに負の値を使用して、左上を原点(ビットは左から右、上から下に埋められます)を指定することもできます。

    602イメージをレンダリングするときに使用するハーフトーン化アルゴリズムを示す列挙値。
    624ハーフトーンパラメータ1(下記参照)
    664ハーフトーンパラメータ2(下記参照)
    704カラーテーブル内の各エントリのカラーエンコーディングを示す列挙値。定義されている値は0のみで、RGBを表します。
    744アプリケーション定義の識別子。画像のレンダリングには使用されません。

    ハーフトーン化アルゴリズム (オフセット 60) は次のようになります。

    価値ハーフトーンアルゴリズムコメント
    0なし最も一般的な
    1誤差拡散ハーフトーンパラメータ1(オフセット64)は、誤差減衰のパーセンテージです。100は減衰なしを示します。0は誤差が拡散されないことを示します。
    2PANDA: 非コード化文書取得のための処理アルゴリズムハーフトーンパラメータ1と2(それぞれオフセット64と68)は、使用されるハーフトーンパターンのXとYの寸法をピクセル単位で表します。
    3スーパーサークルハーフトーンパラメータ1と2(それぞれオフセット64と68)は、使用されるハーフトーンパターンのXとYの寸法をピクセル単位で表します。

    カラーテーブル

    カラーテーブル(パレット)は、BMP画像ファイルにおいて、BMPファイルヘッダー、DIBヘッダー、そしてBI_BITFIELDS(12バイト)またはBI_ALPHABITFIELDS(16バイト)オプション付きのBITMAPINFOHEADERヘッダーが使用されている場合はオプションの3つまたは4つのビットマスクの直後に出現します。したがって、そのオフセットはBITMAPFILEHEADERのサイズにDIBヘッダーのサイズ(さらに3つまたは4つのビットマスクの場合はオプションの12~16バイト)を加えたサイズになります。注:Windows CEでは、 BITMAPINFOHEADERヘッダーはbiCompressionメンバーのBI_ALPHABITFIELDS [14]オプションと共に使用できます。

    パレットのエントリ数は2 n(nはピクセルあたりのビット数)またはヘッダーで指定されたより小さい数です(OS/2 BITMAPCOREHEADERヘッダー形式では、フルサイズパレットのみがサポートされています)。[3] [5]ほとんどの場合、カラーテーブルの各エントリは青、緑、赤、0x00の順で4バイトを占めます(例外については以下を参照)。これは、 BITMAPINFOHEADER構造体のbiBitCountメンバーでインデックス付けされます

    カラーテーブルは、画像で使用される色をリストするバイトブロック(テーブル)です。インデックス付きカラー画像の各ピクセルは、このテーブルで記述される単一の色のインデックスであるビット数(1、4、または8)で記述されます。インデックス付きカラービットマップのカラーパレットの目的は、各インデックス値が対応する実際の色をアプリケーションに通知することです。インデックスなし(パレット化されていない)ビットマップのカラーテーブルの目的は、ビットマップで使用される色をリストすることです。これにより、色表示能力が制限されているデバイスでの最適化が可能になり、将来的に異なるピクセル形式やパレット化への変換が容易になります。

    カラーテーブル内の色は通常、エントリあたり4バイトのARGB32形式で指定されます。OS/2 BITMAPCOREHEADERで使用されるカラーテーブルは、エントリあたり3バイトのRGB24形式を使用します。[3] [5] メモリにロードされたDIBの場合、カラーテーブルはオプションで2バイトのエントリで構成できます。これらのエントリは、明示的なRGBカラー定義ではなく、現在実現されているパレット[7]へのインデックスとなります。

    Microsoftは、1bpp、4bpp、8bppのインデックスカラー画像において、 BITMAPV4HEADERおよびBITMAPV5HEADER有効なアルファチャンネルビットマスク[15]が存在することを禁止していません。これは、カラーテーブルエントリがRGBQUAD.rgbReserved [16]メンバーを介して8.8.8.[0-8].[0-8]形式を使用してアルファ成分を指定できることを示しています。しかし、Microsoftのドキュメントの一部のバージョンでは、RGBQUAD.rgbReservedメンバーは「0でなければならない」と記載されており、この機能は禁止されています。

    前述のように、ピクセルが16ビット/ピクセル(16bpp)形式(およびそれ以上)の場合、カラーテーブルは通常使用されません。つまり、これらのビットマップ画像ファイルにはカラーテーブルエントリが存在しないのが通常です。しかし、Microsoftのドキュメント(2010年11月16日時点のMSDNウェブサイト[17])では、16bpp(およびそれ以上)の場合、カラー表示能力が制限されたデバイスでの最適化を目的とした色のリストを格納するためにカラーテーブルが存在する可能性があると規定されています。同時に、そのような場合には、このカラーテーブルにインデックス付きパレットエントリは存在しないとも規定されています。必須のパレットエントリとオプションのカラーリストを区別しないと、矛盾しているように見えるかもしれません。

    ピクセルストレージ

    ビットマップのピクセルを表すビットは、行(ストライドまたはスキャンラインとも呼ばれる)にパックされています。各行のサイズは、パディングによって4バイト(32ビットDWORD )の倍数に切り上げられます。 [18]

    高さが 1 を超える画像の場合、複数のパディングされた行が連続して保存され、ピクセル配列が形成されます。

    1 行のピクセルを格納するために必要な合計バイト数は次のように計算できます。

    ImageWidthはピクセル単位で表されます。上記の式ではfloor関数とceiling関数が使用されています。

    2 n色のnビット/ピクセル (bpp) イメージ内のピクセル配列を格納するために必要な合計バイト数は、次のように、各行のサイズを 4 バイトの倍数に切り上げる効果を考慮して計算できます。

    ImageHeightはピクセル単位で表されます。トップダウン画像の場合、ImageHeight は負の値で表されるため、絶対値が必要です。

    ピクセル配列(ビットマップデータ)

    ピクセル配列は32ビットのDWORDブロックで、画像をピクセル単位で記述します。通常、ピクセルは「下から上へ」、つまり左下隅から左から右へ、そして画像の下から上へ1行ずつ格納されます。[5] BITMAPCOREHEADERを使用しない限り、非圧縮のWindowsビットマップは、Image Heightの値が負の場合、上から下へ格納することもできます。

    オリジナルのOS/2 DIBでは、色深度の値は1、4、8、24ビット/ピクセル(bpp)の4つしか認められていませんでした。[5] 現代のDIBヘッダーでは、1、2、4、8、16、24、32ビット/ピクセル(bpp)のピクセルフォーマットが認められています。[19] GDI+では、64ビット/ピクセルも認められています。[20]

    行の長さを 4 バイトの倍数にするために、行の末尾にパディング バイト (必ずしも 0 とは限らない) を追加する必要があります。ピクセル配列がメモリにロードされるとき、各行は 4 の倍数のメモリ アドレスから始まる必要があります。このアドレス/オフセットの制限は、メモリにロードされたピクセル配列に対してのみ必須です。ファイル保存の目的では、各行のサイズのみが 4 バイトの倍数である必要があり、ファイル オフセットは任意です。[5]幅 = 1 の 24 ビット ビットマップには、行 (青、緑、赤) ごとに 3 バイトのデータと 1 バイトのパディングが含まれますが、幅 = 2 には 6 バイトのデータと 2 バイトのパディングが含まれます。幅 = 3 には 9 バイトのデータと 3 バイトのパディングが含まれます。幅 = 4 には 12 バイトのデータがあり、パディングはありません。

    圧縮

    • インデックス付きカラー画像は、4 ビットまたは 8 ビットのRLEまたはHuffman 1D アルゴリズムを使用して圧縮できます。
    • OS/2 BITMAPCOREHEADER 2 24bpp画像は 24 ビット RLE アルゴリズムで圧縮できます。
    • 16bppおよび32bpp の画像常に圧縮されずに保存されます。
    • 必要に応じて、すべての色深度の画像を圧縮せずに保存できることに注意してください。

    ピクセル形式

    • 1ビット/ピクセル(1bpp)形式は、2つの異なる色(例えば、黒と白)をサポートします。ピクセル値は各ビットに格納され、最初の(左端の)ピクセルは最初のバイトの最上位ビットに格納されます。[5]各ビットは2色のカラーテーブルへのインデックスです。設定されていないビットは最初のカラーテーブルエントリを参照し、設定されているビットは最後の(2番目の)カラーテーブルエントリを参照します。
    • 2ビット/ピクセル(2bpp)形式は4つの異なる色をサポートし、1バイトあたり4つのピクセルを格納します。左端のピクセルは最上位2ビットに格納されます(Windows CEのみ:[21])。各ピクセル値は、最大4色のテーブルへの2ビットのインデックスです。
    • 4ビット/ピクセル(4bpp)形式は16の異なる色をサポートし、1バイトあたり2ピクセルを格納します。左端のピクセルはより重要なニブルにあります。[5] 各ピクセル値は最大16色のテーブルへの4ビットのインデックスです。
    • 8ビット/ピクセル(8bpp)形式は256色をサポートし、1バイトあたり1ピクセルを格納します。各バイトは最大256色のテーブルへのインデックスです。
    • 1ピクセルあたり16ビット(16bpp)フォーマットは、65536色をサポートし、2バイトのWORDごとに1ピクセルを格納します。各WORDは、ピクセルのアルファ、赤、緑、青のサンプルを定義できます。
    • 24ビット/ピクセル(24bpp)形式は、16,777,216色をサポートし、3バイトごとに1つのピクセル値を保存します。各ピクセル値は、ピクセルの赤、緑、青のサンプル(RGBAX表記では8.8.8.0.0)を定義します。具体的には、青、緑、赤の順(各サンプルあたり8ビット)です。[5]
    • 32ビット/ピクセル(32bpp)形式は、4,294,967,296色をサポートし、4バイトのDWORD値ごとに1ピクセルを格納します。各DWORD値は、ピクセルのアルファ、赤、緑、青のサンプルを定義できます。

    どのビットがどのサンプルを定義するかという曖昧さを解決するために、DIBヘッダーは特定のデフォルトと、ピクセル内の特定のビットグループが特定のチャネルに属することを定義するビットマスクであるビットフィールドを提供します。次の図は、このメカニズムを定義しています。

    図2 – RGBAXサンプル長表記で表現された32ビットピクセルのBITFIELDSメカニズム
    図2 – RGBAXサンプル長表記で表現された32ビットピクセルのBITFIELDSメカニズム

    BITFIELDSビットマスクによって定義されるサンプルフィールドは連続しており、重複してはなりませんが、サンプルフィールドの順序は任意です。最も一般的なフィールド順序は、アルファ、青、緑、赤(MSBからLSB)です。赤、緑、青のビットマスクは、DIBヘッダーの圧縮メンバーがBI_BITFIELDSに設定されている場合にのみ有効です。アルファビットマスクは、DIBヘッダー内に存在する場合、またはDIBヘッダーの圧縮メンバーがBI_ALPHABITFIELDS [14]に設定されている場合にのみ有効です(Windows CEのみ)。

    図3 – Adob​​e Photoshopで実際に生成された16ビットピクセル(RGBAXサンプル長表記)のアルファチャンネル付きピクセルフォーマット[22]
    図3 – Adob​​e Photoshopで実際に生成された16ビットピクセル(RGBAXサンプル長表記)のアルファチャンネル付きピクセルフォーマット[22]
    DIBで可能なすべてのピクセル形式
    DIBで可能なすべてのピクセル形式

    RGBビデオのサブタイプ

    上で説明したBITFIELDメカニズムは、数万種類の異なるピクセル形式の定義を可能にしますが、実際に使用されるのはそのうちのいくつかだけです。[22] RGB8、RGB4、RGB1(上記の表で黄色でマークされ、dshow.h.MEDIASUBTYPE名で定義されています)のすべてのパレット形式は次のとおりです。

    非圧縮RGBビデオサブタイプ[23]
    RGBAXRGBサブタイプRGBAXARGBサブタイプ
    8.8.8.0.8RGB328.8.8.8.0ARGB32
    10.10.10.2.0A2R10G10B10
    8.8.8.0.0RGB2410.10.10.2.0A2B10G10R10
    5.6.5.0.0RGB5654.4.4.4.0ARGB4444
    5.5.5.0.1RGB5555.5.5.1.0ARGB1555
    RGB10ビットのビットフィールド[23]
    ビットフィールドオフセット

    (16進数)

    ビットA2R10G10B10ビットA2B10G10R10
    3600 00 F0 3Fル: 3FF0000020...29FF 03 00 00ル: 000003FF 0... 9
    3A00 FC 0F 00ル: 000FFC0010...1900 FC 0F 00ル: 000FFC0010...19
    3EFF 03 00 00ル: 000003FF 0... 900 00 F0 3Fル: 3FF0000020...29
    アルファ4200 00 00 C0ル: C000000030...3100 00 00 C0ル: C000000030...31

    バージョン2.1.4では、FFmpegは(独自の用語で)BMPピクセル形式bgra、bgr24、rgb565le、rgb555le、rgb444le、rgb8、bgr8、rgb4_byte、bgr4_byte、gray、pal8、 monobサポートしていました。つまり、bgraは透明性のある唯一のピクセル形式としてサポートされていました。[24]

    2×2ピクセルのビットマップ(24ビット/ピクセルエンコード)の例1

    例1

    以下は、ピクセル形式が RGB24 である 2×2 ピクセル、24 ビット ビットマップ (Windows DIB ヘッダーBITMAPINFOHEADER )の例です。

    オフセット

    (16進数)

    サイズ

    (バイト)

    16進値価値説明
    BMPヘッダー
    00242 4D「BM」IDフィールド(42h、4Dh)
    02446 00 00 0070バイト(54+16)BMPファイルのサイズ(54バイトのヘッダー + 16バイトのデータ)
    06200 00未使用アプリケーション固有
    08200 00未使用アプリケーション固有
    0A436 00 00 0054バイト(14+40)ピクセル配列(ビットマップデータ)が見つかるオフセット
    DIBヘッダー
    0E428 00 00 0040バイトDIBヘッダーのバイト数(この時点から)
    12402 00 00 002ピクセル(左から右の順)ビットマップの幅(ピクセル単位)
    16402 00 00 002ピクセル(下から上の順)ビットマップの高さ(ピクセル単位)。下から上のピクセル順の場合は正の値になります。
    1A201 001機使用されているカラープレーンの数
    1C218時00分24ビットピクセルあたりのビット数
    1E400 00 00 000BI_RGB、ピクセル配列圧縮は使用されない
    22410 00 00 0016バイト生のビットマップデータのサイズ(パディングを含む)
    26413 0B 00 00水平2835ピクセル/メートル画像の印刷解像度は
    72DPI ×39.3701インチ/メートルで、2834.6472
    2A413 0B 00 002835ピクセル/メートル(縦)
    2E400 00 00 000色パレット内の色の数
    32400 00 00 00重要な色は0色0はすべての色が重要であることを意味します
    ピクセル配列の開始(ビットマップデータ)
    36300 00 FF0 0 255赤、ピクセル (x=0, y=1)
    393FF FF FF255 255 255白、ピクセル(x=1、y=1)
    3C200 000 04バイトのアライメントのためのパディング(ゼロ以外の値になる場合があります)
    3E3FF 00 00255 0 0青、ピクセル (x=0, y=0)
    41300 FF 000 255 0緑、ピクセル (x=1, y=0)
    44200 000 04バイトのアライメントのためのパディング(ゼロ以外の値になる場合があります)
    0,0: blue 0000FF FF0,1: green 00FF00 FF0,2: red FF00000 FF0,3: white FFFFFF FF1,0: blue 0000FF 7F, half transparent1,1: green 00FF00 7F, half transparent1,2: red FF0000 7F, half transparent1,3: white FFFFFF 7F, half transparent
    4×2ピクセルのビットマップ(32ビット/ピクセルエンコード)の例2

    例2

    以下は、ピクセル形式が ARGB32 で、アルファ チャネルに不透明度値を持つ 4×2 ピクセルの 32 ビット ビットマップ (Windows DIB ヘッダーBITMAPV4HEADER ) の例です。

    オフセット

    (16進数)

    サイズ

    (バイト)

    16進値価値説明
    BMPヘッダー
    00242 4D「BM」IDフィールド(42h、4Dh)
    0249A 00 00 00154バイト(122+32)BMPファイルのサイズ
    06200 00未使用アプリケーション固有
    08200 00未使用アプリケーション固有
    0A47A 00 00 00122バイト(14+108)ピクセル配列(ビットマップデータ)が見つかるオフセット
    DIBヘッダー
    0E46C 00 00 00108バイトDIBヘッダーのバイト数(この時点から)
    12404 00 00 004ピクセル(左から右の順)ビットマップの幅(ピクセル単位)
    16402 00 00 002ピクセル(下から上の順)ビットマップの高さ(ピクセル単位)
    1A201 001機使用されているカラープレーンの数
    1C220 0032ビットピクセルあたりのビット数
    1E403 00 00 003BI_BITFIELDS、ピクセル配列圧縮は使用されない
    22420 00 00 0032バイト生のビットマップデータのサイズ(パディングを含む)
    26413 0B 00 00水平2835ピクセル/メートル画像の印刷解像度は
    72DPI ×39.3701インチ/メートルで、2834.6472
    2A413 0B 00 002835ピクセル/メートル(縦)
    2E400 00 00 000色パレット内の色の数
    32400 00 00 00重要な色は0色0はすべての色が重要であることを意味します
    36400 00 FF 00ビッグエンディアンでは00FF0000赤チャンネルのビットマスク(BI_BITFIELDSが指定されているため有効)
    3A400 FF 00 00ビッグエンディアンでは0000FF00緑チャネルビットマスク(BI_BITFIELDSが指定されているため有効)
    3E4FF 00 00 00ビッグエンディアンでは000000FF青チャンネルのビットマスク(BI_BITFIELDSが指定されているため有効)
    42400 00 00 FFビッグエンディアンではFF000000アルファチャンネルビットマスク
    46420 6E 69 57リトルエンディアン " Win "LCS_WINDOWS_COLOR_SPACE
    4A3600...00CIEXYZTRIPLE カラースペースエンドポイントLCS「Win 」または「sRGB」 では未使用
    6E400 00 00 000 レッドガンマLCS「Win 」または「sRGB」 では未使用
    72400 00 00 000 グリーンガンマLCS「Win 」または「sRGB」 では未使用
    76400 00 00 000 ブルーガンマLCS「Win 」または「sRGB」 では未使用
    ピクセル配列の開始(ビットマップデータ)
    7A4FF 00 00 7F255 0 0 127青(アルファ:127)、ピクセル(x=0、y=1)
    7E400 FF 00 7F0 255 0 127緑(アルファ:127)、ピクセル(x=1、y=1)
    82400 00 FF 7F0 0 255 127赤(アルファ:127)、ピクセル(x=2、y=1)
    864FF FF FF 7F255 255 255 127白(アルファ:127)、ピクセル(x=3、y=1)
    8A4FF 00 00 FF255 0 0 255青(アルファ:255)、ピクセル(x=0、y=0)
    8E400 FF 00 FF0 255 0 255緑(アルファ:255)、ピクセル(x=1、y=0)
    92400 00 FF FF0 0 255 255赤(アルファ:255)、ピクセル(x=2、y=0)
    964FF FF FF FF255 255 255 255白(アルファ:255)、ピクセル(x=3、y=0)

    ビットマップ データは画像の左下隅から始まることに注意してください。

    BMP形式の使用

    BMP ファイル形式はシンプルで、Windows をはじめ広く普及しており、また、比較的文書化が進んでおりオープン形式であるという事実から、多くのオペレーティング システムの画像処理プログラムで読み書きできる非常に一般的な形式となっています。ICOファイルと CUR ファイルには、BITMAPINFOHEADER で始まるビットマップが含まれています。

    多くの古いグラフィカルユーザーインターフェースは、組み込みのグラフィックスサブシステムでビットマップを使用していました。 [ 25]たとえば、Microsoft WindowsとOS / 2プラットフォームのGDIサブシステムでは、使用される特定の形式はWindowsとOS / 2のビットマップファイル形式であり、通常はファイル拡張子が付けられています.BMP[26]

    ほとんどのBMPファイルは圧縮されていないため(またはパレット画像では一般的に低圧縮率のランレングス符号化が使用されているため)、ファイルサイズが比較的大きくなりますが、多くのBMPファイルは冗長データを含んでいるため、 ZIPなどのロスレスデータ圧縮アルゴリズムによって大幅に圧縮できます。RARなどの一部の形式では、冗長データの効率的な圧縮に特化したルーチンが組み込まれています。

    X Window Systemは、白黒画像には同様のXBM形式、カラー画像にはXPMピクセルマップ)形式を使用します。また、生データのみを保存し、その他の情報を含まない「raw」形式も数多く存在します。Portable Pixmap(PPM)形式やTruevision TGA形式も存在しますが、あまり使用されず、特殊な用途でのみ使用されます。例えば、TGA形式は透明度情報を含むことができます。

    参考文献

    1. ^ 「IANAに関する考慮事項」。Windowsイメージメディアタイプ。第5章。doi : 10.17487/ RFC7903。RFC 7903
    2. ^ abc James D. Murray; William vanRyper (1996年4月). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly . bmp. ISBN 1-56592-161-5. 2014年3月7日閲覧
    3. ^ abcdefgh James D. Murray、William vanRyper (1996年4月). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly . os2bmp. ISBN 1-56592-161-5. 2014年3月7日閲覧
    4. ^ ab "[MS-WMF]: Windows メタファイル形式". MSDN . 2014年2月13日. 2014年3月12日閲覧
    5. ^ abcdefghij 「DIBとその用途」。Microsoftヘルプとサポート2015年5月14日閲覧。
    6. ^ abc MSDN ビットマップヘッダータイプ
    7. ^ abc MSDN BITMAPINFO 構造
    8. ^ Feng Yuan - Windows グラフィック プログラミング: Win32 GDI と DirectDraw: パックされたデバイス非依存ビットマップ (CreateDIBPatternBrush、CreateDIBPatternBrushPt、FindResource、LoadResource、LockResource)
    9. ^ Summers, Jason (2015年10月30日). 「pal8os2v2-16.bmp」 . 2016年7月6日閲覧
    10. ^ Summers, Jason (2015年10月30日). 「BMP Suite」 . 2016年7月6日閲覧
    11. ^ Cox, Chris (2010-11-15). 「アルファチャンネル付きの無効なBMP形式」. Photoshop Windowsフォーラム. Adob​​e . 2015年1月27日時点のオリジナルよりアーカイブ。 2016年5月22日閲覧
    12. ^ 「Microsoft Windows ビットマップ: グラフィックス ファイル形式百科事典からの概要」。
    13. ^ ab 「特定のビットマップ関数と構造の JPEG および PNG 拡張」。
    14. ^ ab MSDN - BITMAPINFOHEADER (Windows CE 5.0): biCompression メンバーの BI_ALPHABITFIELDS
    15. ^ MSDN – BITMAPV4HEADER : メンバー bV4AlphaMask
    16. ^ MSDN – RGBQUAD: rgbReserved メンバー
    17. ^ biClrUsed MSDN BITMAPINFOHEADER の注記を参照
    18. ^ 「Image Stride - Win32 アプリ」。learn.microsoft.com
    19. ^ MSDN - BITMAPINFOHEADER : メンバー biBitCount
    20. ^ 「ビットマップの種類」MSDN 2012年6月3日2014年3月16日閲覧
    21. ^ MSDN: Windows CE - BITMAPINFOHEADER 構造
    22. ^ ab Adob​​e Photoshop: BMP 形式 Archived 2011-09-22 at the Wayback Machine
    23. ^ ab 「非圧縮RGBビデオサブタイプ」dshow.h . MSDN . 2014年3月11日閲覧
    24. ^ 「画像フォーマット」. FFmpeg一般ドキュメント. 2014年. 2014年2月23日閲覧
    25. ^ Julian Smart、Stefan Csomor、Kevin Hock (2006). 『WxwidgetsによるクロスプラットフォームGUIプログラミング』 Prentice Hall. ISBN 0-13-147381-6
    26. ^ 「ビットマップイメージファイル(BMP)、バージョン5」。デジタル保存米国議会図書館。2014年1月8日。 2014年3月11日閲覧
    • ビットマップファイルの構造(digicamsoft.com)
    • DIB(デバイス非依存ビットマップ)の紹介(herdsoft.com)
    • kalytta.com のシンプルなビットマップ ローダー C++ クラス (A2R10G10B10 はまだサポートされていません)
    • BMPファイルフォーマット、パート1、David Charlap著、Dr. Dobb's journal of software tools (drdobbs.com)、1995年3月
    「https://en.wikipedia.org/w/index.php?title=BMP_file_format&oldid=1324846296」より取得
    Original text
    Rate this translation
    Your feedback will be used to help improve Google Translate