2
私は多くの画像を処理する方法を探していますが、メモリ不足はありません。私のアプリが最初に実行されるときに、多数のサムネイルを作成してローカルに保存する必要があります。これは一度だけ起こります。Monotouch:多くの画像を操作する - メモリ不足
私はメモリのエラーが発生している。
大雑把に、私はこのつもりです:
[Loop BigPaths]
sourceImg = UIImage.FromFile (nextBigpath);
img = UIImageTools.MakeSquare (sourceImg, 50,3);
img.AsJPEG().Save (path, NSDataWritingOptions.Atomic, out err);
sourceImg.Dispose();
sourceImg = null;
img.Dispose();
img = null;
[end loop]
UPDATE:それを修正するには
を、私は今のスレッドで50ミリ秒を待って、すべての10の項目の後にGC.Collect()を呼び出しています。睡眠()。
また、私はsourceImg
img
をループ外で定義しました。
これらの2つの変更で、私はもはやメモリエラーを取得していません。
これは、UIImageを手作業で処理した後には起こらないはずです。しかし、コードの他の部分がリソースを処分していない可能性があります。例えばイメージ操作コードは?あなたが問題のコードを見て、それをループで実行して 'OutOfMemoryException'を複製することができれば、あなたを助けるほうがはるかに簡単です。 – poupou
GetImageにコードを表示できますか?それらをすべて永続的にキャッシュし続ける画像をロードする方法はいくつかあります(UIImage.FromBundle)。 –
私の修正プログラムでコードを更新しました。私はそれがなぜ機能するのか完全に理解していませんが、それはありません。 GC.Collect()を10枚ごとに使用し、Thread.Sleep()を使用すると便利でしょうか? –