掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Photoshop 7 で作成したBitmapを読み込むには? (ID:11206)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ストリームエラーを起こすBMPファイルは、sadoyamaさんのPhotoshopbmp.txtに書いてある通り、BitmapInfo^.bmiHeader.biSizeImageの値が不正ですね。 128x128のBitmapの場合なら、biSizeImageの値は 【正】49,152バイト 【誤】49,154バイト VCLのソースを見てみると、この biSizeImage値が0の時は正しい値を計算してセットしますが、 0でない時は計算しないで、その値をそのまま使用しています。 つまり、VCLは BMPファイルのヘッダ値が「常に正しい」ことを信じていることになりますね。 したがって、期待に反して、正しい値より大きい「不正な biSizeImage値」がセットされているBMPファイルの場合にはストリームエラーが出るわけです。 以下は Graphics.pas の 5651〜5656行です。 VCLソースを持っている人は、Graphics.pasファイルをプロジェクトのフォルダにコピーしてから、その 5652行をコメントアウトして強制的に ImageSizeの値を修正すれば、ストリームエラーは出なくなります。 5651: // biSizeImage can be zero. If zero, compute the size. 5652://*** if biSizeImage = 0 then // top-down DIBs have negative height 5653: biSizeImage := BytesPerScanLine(biWidth, biBitCount, 32) * Abs(biHeight); 5654: 5655: if biSizeImage < ImageSize then ImageSize := biSizeImage; 5656: end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.