1

私のAndroidアプリケーションでは、ユーザーがボタンをクリックしてギャラリーを開き、画像を選択できるようにする必要があります。そして、その特定の選択した画像を私のレイアウト(UI)の画像ビューにロードする必要があります。私はいくつかのコードを持っていますが、それは java.lang.outofmemory.Please 誰かが私を助けることができます?

4

2 に答える 2

3

onActivityResult() メソッドで画像 uri をデコードする必要があります。このメソッドを呼び出して、decodeBitmap を実行します。

/**
     * This is very useful to overcome Memory waring issue while selecting image
     * from Gallery
     * 
     * @param selectedImage
     * @param context
     * @return Bitmap
     * @throws FileNotFoundException
     */
    public static Bitmap decodeBitmap(Uri selectedImage, Context context)
            throws FileNotFoundException {
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(context.getContentResolver()
                .openInputStream(selectedImage), null, o);

        final int REQUIRED_SIZE = 100;

        int width_tmp = o.outWidth, height_tmp = o.outHeight;
        int scale = 1;
        while (true) {
            if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) {
                break;
            }
            width_tmp /= 2;
            height_tmp /= 2;
            scale *= 2;
        }

        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize = scale;
        return BitmapFactory.decodeStream(context.getContentResolver()
                .openInputStream(selectedImage), null, o2);
    }

詳細については、ビットマップを効率的に表示するトピックを参照してください。

http://developer.android.com/training/displaying-bitmaps/index.html

このヘルプを願っています。

于 2013-10-17T14:49:06.070 に答える
0

ここでは、この例外が発生する理由と、ビットマップを正しく表示する方法について説明します: http://developer.android.com/training/displaying-bitmaps/index.html

于 2013-10-17T14:47:49.257 に答える