画像操作にてエラー


ほとちゃん  2004-03-17 18:56:43  No: 7707  IP: [192.*.*.*]

TJpegImageおよびTBitmapを使用して
画像の変換処理を作成しています。

しかし、大量画像の操作を行うと、
システムリソースが足らないのエラーが
発生してしまいます。

エラーにならないようにするには、
どうすればよろしいでしょうか?

編集    削除
にしの  2004-03-17 19:29:03  No: 7708  IP: [192.*.*.*]

きちんとTBitmapやTJpegImageは解放していますか?
また、TBitmapには容量の制限があります。容量の大きい画像をしようしていませんか?
容量の制限によりリソース不足のエラーが出ているのであれば、中村氏のDHGLにあるTBigBitmapが使えると思います。
http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/

編集    削除
ほとちゃん  2004-03-17 19:36:01  No: 7709  IP: [192.*.*.*]

にしの様
ありがとうございます。
try 〜 finallyにて
必ずFREEするようにはしています。

容量の制限とありますが、具体的には、
どれくらいなのでしょうか?

編集    削除
にしの  2004-03-17 19:52:23  No: 7710  IP: [192.*.*.*]

Delphi-MLの過去ログを探すといろいろ見つかりますよ。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=065565
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=039131
このあたりがその話題かと。

編集    削除
ほとちゃん  2004-03-17 20:47:23  No: 7711  IP: [192.*.*.*]

画像としては200KBぐらいのものを
1000枚扱います。

タスクマネージャーを見ていると、
FREEしているにもかかわらず、
残っているような感じになっています。

完全破棄はできないのでしょうか??

編集    削除
にしの  2004-03-17 20:55:32  No: 7712  IP: [192.*.*.*]

コードを見ないと何とも言えません。
何か見落としがあるのかも。
MemCheckなどで、メモリリークしているかどうか確認してみてはどうでしょう。
MemCheckは、googleで検索すればすぐ見つかると思います
Delphiのバージョンによっては、修正が必要な場合がありますが、メモリリークを見つけるには便利なユニットです。

編集    削除
ほとちゃん  2004-03-17 23:01:13  No: 7713  IP: [192.*.*.*]

MemCheckを使用してみた結果、TJpegImageの
JpegNeededやLoadFromStreamでメモリリークしてそうです。

ちなみにDELPHI5 PROFESSIONALを使用しています。

編集    削除
そ、それは  2004-03-17 23:35:27  No: 7714  IP: [192.*.*.*]

ほんとうなら重大バグ!!!

編集    削除
sadoyama  URL  2004-03-19 09:50:56  No: 7715  IP: [192.*.*.*]

> MemCheckを使用してみた結果、TJpegImageの
> JpegNeededやLoadFromStreamでメモリリークしてそうです。
Delphi3 pro と Delphi6 personal しか使ったことがないので、
Delphi5 については解りませんが、確かに「本当なら重大なバグ」です。
今までそういう報告を聞いたことがないので、見当違いだと思います。
にしのさんの Res と同意見で、TJpegではなく、ご自分のコード内の問題だと思います。
TJpegImage と TBitmap の両方とも finally 部で Free されているのでしょうか。

編集    削除
にしの  2004-03-19 20:36:37  No: 7716  IP: [192.*.*.*]

http://buglist.jrsoftware.org/
ここを見る限りでは、メモリリークのバグは報告されていませんね。

編集    削除