BMP形式のbisizeimage、bisize、bfsizeの違い



Difference Between Bisizeimage



宿題を書いているとき、私は3つの違いについて混乱しました。インターネットで詳細な紹介は見つかりませんでした。
以下の説明を参照することができます。

bfSizeは、ビットマップイメージのフルファイルサイズです。ビットマップイメージのファイルサイズは、次の2つの部分で構成されます。
ヘッダーセクション(ファイルに関する一般情報= bfOffBits)
および画像部分(ピクセル情報が格納されている場所= biSizeImage)



したがって、次のような構造になります。

bfSize = bfOffBits + biSizeImage

加えて、 bfOffBits(タイトルセクション) さらに細分化することができます
ファイルヘッダーと
ヘッダー(biSize)



したがって、次のように書くこともできます。

bfSize = 14 + 40 + biSizeImage

どちらか

bfSize = 54 + biSizeImage

ただし、ハードコードされた「魔法数」は通常人気がないため、これは悪い習慣です。
しかし、見てみましょう biSizeImage 。一般に、画像自体のファイルサイズは、色深度*幅*高さで構成されます。 24ビットBMPの色深度は、ピクセルあたり3バイト(それぞれ、青、緑、赤、0〜255の値)、いわゆるRGBトリプレットです。専門家からの追加情報:3色の値は青、緑、赤の順序で保存されます-トピックの詳細については、キーワードLittleEndiannessを検索してください。画像の幅を4バイトで除算できない場合、BMP標準でもパディングとして0が追加されます。



他の人が指摘しているように、それは少し混乱しているので、ピクセルのサイズにバイトの深さを掛ける必要があります。だから私たちは持っています

biSizeImage = (biWidth * sizeof(RGBTRIPLE) + padding) * abs(biHeight)

これにより、画像の最終的なバイトサイズがわかります。

したがって、結論に達します。

biSizeImage = BMP画像部分のファイルサイズ(バイト単位)
biSize = BMPヘッダーの情報ヘッダー部分のファイルサイズ(バイト単位)
Bfsize =完全なBMPのファイルサイズ(バイト単位)(タイトルと画像自体を含む)

理解に役立つことを願っています、(https 元のリンク )。