TJpegImageおよびTBitmapを使用して
画像の変換処理を作成しています。
しかし、大量画像の操作を行うと、
システムリソースが足らないのエラーが
発生してしまいます。
エラーにならないようにするには、
どうすればよろしいでしょうか?
きちんとTBitmapやTJpegImageは解放していますか?
また、TBitmapには容量の制限があります。容量の大きい画像をしようしていませんか?
容量の制限によりリソース不足のエラーが出ているのであれば、中村氏のDHGLにあるTBigBitmapが使えると思います。
http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
にしの様
ありがとうございます。
try 〜 finallyにて
必ずFREEするようにはしています。
容量の制限とありますが、具体的には、
どれくらいなのでしょうか?
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
このあたりがその話題かと。
画像としては200KBぐらいのものを
1000枚扱います。
タスクマネージャーを見ていると、
FREEしているにもかかわらず、
残っているような感じになっています。
完全破棄はできないのでしょうか??
コードを見ないと何とも言えません。
何か見落としがあるのかも。
MemCheckなどで、メモリリークしているかどうか確認してみてはどうでしょう。
MemCheckは、googleで検索すればすぐ見つかると思います
Delphiのバージョンによっては、修正が必要な場合がありますが、メモリリークを見つけるには便利なユニットです。
MemCheckを使用してみた結果、TJpegImageの
JpegNeededやLoadFromStreamでメモリリークしてそうです。
ちなみにDELPHI5 PROFESSIONALを使用しています。
ほんとうなら重大バグ!!!
> MemCheckを使用してみた結果、TJpegImageの
> JpegNeededやLoadFromStreamでメモリリークしてそうです。
Delphi3 pro と Delphi6 personal しか使ったことがないので、
Delphi5 については解りませんが、確かに「本当なら重大なバグ」です。
今までそういう報告を聞いたことがないので、見当違いだと思います。
にしのさんの Res と同意見で、TJpegではなく、ご自分のコード内の問題だと思います。
TJpegImage と TBitmap の両方とも finally 部で Free されているのでしょうか。
http://buglist.jrsoftware.org/
ここを見る限りでは、メモリリークのバグは報告されていませんね。
ツイート | ![]() |