1

画像パスをビットマップに変換してアクティビティに表示する以下のコードを実装しようとしています。以下のエラーが表示されます。さまざまなソリューションを試しましたが、どれも機能していません

画像を Bitmap オブジェクトにロードする際の奇妙なメモリ不足の問題

Android: 大きなビットマップ ファイルのサイズをスケーリングされた出力ファイルに変更する

OutOfMemoryError: ビットマップ サイズが VM の予算を超えています:- Android

エラー: E/dalvikvm-heap(19252): このプロセスには 12742656 バイトの外部割り当てが大きすぎます。

for(int i = 0; i < numItems; i++) {

     File imgFile = new  File(photoPaths.get(i));

        if(imgFile.exists())
        {

             images[i] = BitmapFactory.decodeFile(imgFile.getAbsolutePath());


        }
4

2 に答える 2

1

よりジャストインタイムのアプローチでそれらをロードするか、ビットマップ ファクトリのオプションを使用することを検討してください (つまり、理想的には 2 の累乗に設定してファクトリにinSampleSize渡します)。また、必ずtrue を設定してください。 BitmapFactory.OptionsinSampleSizeinPurgeable

MediaStoreこれらの画像を から取得する場合は、サムネイルContentProviderも使用できます。

より適切なサポートができるように、ユース ケースについて詳しく教えていただけると幸いです。

于 2012-04-03T21:49:22.957 に答える
0

複数の大きなビットマップを読み込もうとしていますが、そのうちの少なくとも 1 つが ~12MB です。大きすぎます。投稿したソリューションは機能します。特にビットマップを画面に表示しているだけなので、ビットマップのサイズをはるかに小さくします。

于 2012-04-03T21:36:50.987 に答える