グレースケール画像のBMP形式とは何ですか
パレットを使用する以外に、。を使用してBMPを書き込むことにより、グレースケールBMP(ピクセルあたり8ビット)を作成できますBITMAPV4HEADER
。bV4RedMask
、bV4GreenMask
をbV4BlueMask
同じ値に設定します。ただし、このような形式の最小bcBitCount
値は16であるため、各ピクセルは2バイトを占める必要があります。ただし、2番目のバイトをアルファチャネル(透明度)に使用できます。
特に16ビット/ピクセルの場合
どのBMPバージョンも16ビットの色深度をサポートしているようには見えません。ファイル形式で許可されているように見えますが(bcBitCount=16
およびbV4…Mask=0xFFFF
)、画像エディタとライブラリは余分なビットを破棄します。
一部のドキュメントは64BPPBMPファイルを参照していBITMAPV4HEADER
ますが、マスクフィールドのサイズはすべて32ビットであるため(64 BPPのチャネルマスクを指定することはできません)、フィールドにどのように適合するかは不明です。
もう1つのオプションは、PNGを使用することでしたが、ここで説明するように、データを圧縮します(これは私が望むものではありません)。
必要がなければ、PNGファイルを圧縮する必要はありません。圧縮レベル0を使用すると、ピクセルはそのままになります(さらに、zlibヘッダー/フッター)。
また、ほとんどのモニターは256色をサポートしており、16ビットの場合は4096ではないため、画像が歪んで表示される場合があることにも注意してください。
16ビット深度では、4096ではなく65536のチャネルごとの明度値が可能になります。歪みはガンマ曲線の問題のように聞こえ、ファイル形式の問題とは実際には関係ありません。