0

複数の画像を含むアルバム フォルダーがある画像処理アプリを開発しています。

また、プロジェクトには複数のアルバムが存在する場合があります。アプリケーションを起動すると、アルバムのリストがあります。アルバム ギャラリー ビューを選択すると、そのアルバムに含まれる画像が表示されます。

任意の画像を選択すると、選択した画像の上に描画できる新しいアクティビティが開始されます (つまり、画像の上に線や図形を描画できます)。カメラを使用して、またはギャラリーから、アルバムに画像を追加することもできます。今私が直面している問題は、アプリが正常に動作することですが、OutOfMemory エラーを処理できません。私は多くのことを試しました。そのような

  1. 画像のサイズ変更。
  2. 破壊活動。
  3. データベース ヘルパー クラスのアプリケーション コンテキストを使用します。
4

2 に答える 2

0

Android で画像を操作するには、オプションが必要です: - Java と SDK を使用 - ネイティブ コードと NDK を使用

SDK のみを使用する場合は、リソース イメージのサンプリングにinSampleSizeを使用してみてください。画像のサンプリングに加えて、使用後に画像リソースを適切にリサイクルし、アプリでメモリ リークが発生していないことを確認してください。MATを使用してメモリ リークを発見できます。

または、NDK を使用してコードを記述することもできます。ネイティブ コードを使用する場合、作成したオブジェクトは Java とは対照的にネイティブ ヒープに配置されます。

于 2012-10-11T10:03:11.760 に答える
0

OOM(OutOfMemory) の問題は、常にビットマップ オブジェクトに関する不適切な処理が原因です。したがって、あなたが試したこと (サイズ変更、アクティビティの破棄など) では、OOM の問題を解決できませんでした。

OOM を解決するより良い方法は、デバイスの解像度密度に従って画像をメモリにロードすることです。大きな画像を効率的に読み込む方法について説明している Goole Android トレーニング コースの 1 つの章があります。ここで参照できます

https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

これがあなたを助けることを願っています!

于 2016-09-06T04:04:03.593 に答える