• ベストアンサー

DIBについて

DIBの、 BITMAPFILEHEADER構造体のメンバで bfOffBits - sizeof (BITMAPFILEHEADER) の引き算をすると何か意味の値が求められますか? BITMAPINFO構造体と同じ、値になるんでしょうか? それと、 bmpFileHeader.bfSize - bmpFileHeader.bfOffBits の値と BITMAPINFOHEADER構造体のメンバ、biSizeImage とは同じ値になりますか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.2

┌ ここにある BMP ファイル内の構造体配置図をご覧になれば理解できると思います. ↓ BMPファイルのフォーマット http://www5d.biglobe.ne.jp/~noocyte/Programming/Windows/BmpFileFormat.html ただし,ビットマップデータが BITMAPINFO の直後から始まるとは限らないので注意が必要. (直後から始まる場合は packed bitmap と呼ばれる.) また,ヘッダの中にはアテにならないデータが含まれていることもあります. bmpFileHeader.bfSize や、biSizeImage もそれに該当するので, 信頼できる他のデータから自分で計算した方がいいです. ・参考  BMP 画像の扱いかた  http://www.geocities.co.jp/SiliconValley-SanJose/9921/bitmap.htm

noname#168725
質問者

お礼

回答ありがとうございます。 >ヘッダの中にはアテにならないデータが含まれていることもあります. bmpFileHeader.bfSize や、biSizeImage もそれに該当するので, 信頼できる他のデータから自分で計算した方がいいです. なるほど。 いろいろ教えていただきありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#30727
noname#30727
回答No.1

>引き算をすると何か意味の値が求められますか? >BITMAPINFO構造体と同じ、値になるんでしょうか? ビットマップファイルの構造は  BITMAPFILEHEADER等  BITMAPINFOHEADER等  RGBQUAD[n] (nは0でもよい)  ユーザー定義ヘッダ(サイズは任意)  ビットマップビットデータ となっています。 ファイルからBITMAPFILEHEADERを読み込んだ段階で、ファイルの現在位置からビットマップビットデータまでのオフセットを意味します。 >bmpFileHeader.bfSize - bmpFileHeader.bfOffBits の値と >BITMAPINFOHEADER構造体のメンバ、biSizeImage とは同じ値になりますか? 同じ値にはなりません。 提示された2つの式を加算すると bmpFileHeader.bfSize - sizeof(BITMAPFILEHEADER) になります。 ファイルヘッダのサイズはsizeof(BITMAPFILEHEADER)であるとは限りませんから、捨てるサイズを求めようとしているのではないでしょうか。 同様にインフォヘッダのサイズもsizeof(BITMAPINFOHEADER)であるとは限りません。BITMAPV4HEADERやBITMAPV5HEADERが既に存在していますが、未来において更に追加される可能性があります。

noname#168725
質問者

お礼

回答ありがとうございます。 >インフォヘッダのサイズもsizeof(BITMAPINFOHEADER)であるとは限りません。BITMAPV4HEADERやBITMAPV5HEADERが既に存在していますが、未来において更に追加される可能性があります。 参考にしてみますありがとうございます!

すると、全ての回答が全文表示されます。

関連するQ&A