掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
32ビットマップの作成 (ID:102801)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Len(BITMAPINFOHEADER) と LenB(BITMAPINFOHEADER) は共に「40」ですが、 Len(BITMAPFILEHEADER) と LenB(BITMAPFILEHEADER) は「14」「16」という 異なる値を返すことに注意してください。 Len と LenB が異なる値を返すようなユーザー定義型を扱う場合、 RtlMoveMemory するには、その分のアライメントを考慮する必要があります。 で。今回の場合はそもそも RtlMoveMemory 関連がゴッソリ不要で、 Open bmpFilename For Binary As fn Put fn, , BITMAPFILEHEADER Put fn, , BITMAPINFOHEADER Put fn, , myData Close fn だけで良いかと思います。 今回の 256x256 な 32bit カラーなファイルの場合、ファイルサイズを計算すると、 縦 256 × 横 256 × 4(ピクセルあたりのバイト数) で 262,144 バイト。 それに、BITMAPINFOHEADER の 40 バイトと、BITMAPFILEHEADER の 14 バイトで、 合計『262,198』バイトになるはずです。つまり完成後に FileLen(bmpFilename) を得た場合、262198 (=&H00040036) という値になるかと思います。 また、それと同じ情報が BITMAPFILEHEADER.bfSize にセットされますから、 作成されたファイルヘッダの先頭 6 バイトは、 42,4D … "BM" 36,00,04,00 … 262198 になるはずです。しかしプログラムはじめさんのコードでは、違う値になってしまうでしょう。 (出力されたファイルのバイナリを比較してみてください)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.