掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Photoshop 7 で作成したBitmapを読み込むには? (ID:11213)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>なぜ EReadError 例外が発生するのか理由が解りません。 その理由(例外発生の原因)として、 >(3) 確保されたメモリサイズが少なすぎる に1票。 それは、Graphics.pasの Stream.ReadBuffer(BitsMem^, ImageSize); の行の前に ImageSize := ImageSize + 1; を追加すればすべてのBitmapが EReadError例外を出すことから分かる。 (ただし、エラーにならない妙なBitmapも存在するような…) 以下は推定で断定にあらず。 BMHandle := CreateDIBSection(DC, BitmapInfo^, DIB_RGB_COLORS, BitsMem, 0, 0); この関数の中で BitsMemのメモリ領域を確保する際には、BitmapInfo.biSizeImage値は使われずに、 biWidth、biHeight値などからあらためて計算し直している。 そして、Bitmapの縦のサイズが64の倍数ではない場合には、その計算された必要サイズにさらに2Byte追加している。 なぜ縦のサイズが64の倍数ではない場合に 2Byte余計にメモリを確保するのか? これはおそらく行儀の悪いBitmap作成ソフトの存在を考慮しているためと思われる。 ところが、Photoshop7は、これを「どんなサイズのBitmapを読み込む時にもメモリは 2Byte余計に確保される」と勘違いして、常に末尾に2Byte加えたBitmapファイルを作成している。 Photoshop7のこの行為は無罪?それとも有罪?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.