0

アプリケーションに保存ボタンのある画像ビューがあります。保存ボタンをクリックすると、ユーザーがデバイスの外部デバイスに保存する画像のサイズを選択すると、アプリはいくつかのサイズを表示します。いくつかの(低い)サイズでは正常に機能しますが、大きなサイズでは強制的に閉じます。私は例外からメモリに直面しています。画質は落としたくない。

これで誰か助けてください

4

2 に答える 2

0

BitmapFactory.Optionsを使用して、以下のように oom エラーなしで画像を保存します。

final int DESIRED_WIDTH = 640;

// Set inJustDecodeBounds to get the current size of the image; does not
// return a Bitmap
final BitmapFactory.Options sizeOptions = new BitmapFactory.Options();
sizeOptions.inJustDecodeBounds = true;
BitmapFactory.decodeByteArray(data, 0, data.length, sizeOptions);
Log.d(TAG, "Bitmap is " + sizeOptions.outWidth + "x"
            + sizeOptions.outHeight);

// Now use the size to determine the ratio you want to shrink it
final float widthSampling = sizeOptions.outWidth / DESIRED_WIDTH;
sizeOptions.inJustDecodeBounds = false;
// Note this drops the fractional portion, making it smaller
sizeOptions.inSampleSize = (int) widthSampling;
Log.d(TAG, "Sample size = " + sizeOptions.inSampleSize);

// Scale by the smallest amount so that image is at least the desired
// size in each direction
final Bitmap result = BitmapFactory.decodeByteArray(data, 0, data.length,
        sizeOptions);
于 2014-03-18T11:13:33.087 に答える