人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

プログラム(EasyJPEG.cpp)。関数 LoadBmp(...) のBITMAPINFO.BITMAPINFOHEADER に正確な情報が入らない。何か間違ってますでしょうか?。http://www.idiagdia.com/disca/files/jpegtest.zip

BITMAPFILEHEADER & BITMAPINFOHEADER

●質問者: disca
●カテゴリ:コンピュータ 生活
✍キーワード:プログラム 関数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● virus
●30ポイント

http://www.hatena.ne.jp/1090185509

プログラム(EasyJPEG.cpp)。関数 LoadBmp(...) のBITMAPINFO.BITMAPINFOHEADER に正確な情報が入らない。何か間違ってますでしょうか?。http://www.idiagdia.com/disca/fi.. - 人力検索はてな

チラッとしかみてないですが、ポインターのキャスト&位置あわせを間違ってません?

多分意図されているのは

pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));

pBmiImg= ((BYTE*) pBfh) + pBfh->bfOffBits;

だと思うんですが、コンパイラが意図を察して適当にオペレータの優先順位を変えてくれるなんてことはないですよ(^^ゞ

◎質問者からの返答

ありがとうございます。


2 ● syuzabu
●30ポイント

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DIB.html

VC++テクニック : ディスク上のBMPファイルを表示

.NET持ってないんで確認出来できないです。申し訳ないです。

>> 65: pBmi= (BITMAPINFO*) pFileBuf + sizeof(BITMAPFILEHEADER);

コレだとBITMAPINFO型にキャストしたpFileBufとBITMAPFILEHEADER型の

サイズを足す形になってなんか変になりそうな気がします。(適当ですみません)

pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));

全体をカッコで囲んで左式に代入する際にキャストしてみては如何ですか?

似非プログラマなんであんまりソース分かってませんが・・・(^-^;)

◎質問者からの返答

ありがとうございます。


3 ● aki73ix
●30ポイント

http://black.sakura.ne.jp/~third/system/winapi/win114.html

URLはダミー

ポインタの使い方がおかしいです

構造体のポインタにサイズを加算したらおかしくなります。

最初にアドレスを加算してから構造体のポインタにキャストしないといけません

誤:pBmi= (BITMAPINFO*) pFileBuf + sizeof(BITMAPFILEHEADER);

正:pBmi= (BITMAPINFO*)( pFileBuf + sizeof(BITMAPFILEHEADER));

◎質問者からの返答

ありがとうございます。期待していた正解です。

以前にお答えていただいた方の場合では

(BITMAPINFO*)((BYTE*)pFileBuf) + sizeof(BITMAPFILEHEADER)

と何度も眠気と戦いながら試していたのですが、上手くいきませんでした。


4 ● kajuyone
●30ポイント

http://www.hatena.ne.jp/

はてな

pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));

ではないでしょうか?

◎質問者からの返答

正解です。ありがとうございます。

訂正:

virus さん、 syszabu さんの答えも期待していた正解です。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ