Как изменить размер изображения перед загрузкой в ​​ImageView, чтобы избежать проблем с OOM - PullRequest
1 голос
/ 13 января 2020

Как я могу изменить размер изображения перед загрузкой в ​​просмотр изображений после выбора из галереи / фотографий ?. В противном случае большие изображения вызывают проблемы с OOM.

SelectImageGallery.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Image From Gallery"), 1);
    }
}
Uri uri = I.getData();
    try {
        bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
        imageView.setImageBitmap(bitmap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Ответы [ 4 ]

0 голосов
/ 17 января 2020

Я наконец сделал это, чтобы решить проблему с помощью glide следующим образом для тех, кому это может понадобиться в будущем. Выбор намерения

SelectImageGallery1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Image1 From Gallery"), 1);
    }
}

Настройка изображения для просмотра изображений с помощью Glide

    @Override
    protected void onActivityResult(int RC, int RQC, Intent I) {
        super.onActivityResult(RC, RQC, I);
        if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {
            Uri uri = I.getData();
            RequestOptions options = new RequestOptions()
                    .format(DecodeFormat.PREFER_RGB_565)
                    .placeholder(R.drawable.ic_launcher_background)
                    .error(R.drawable.ic_launcher_background);

            Glide.with(this)
                    .setDefaultRequestOptions(options)
                    .asBitmap()
                    .load(uri)
                    .centerInside()
                    .into(new CustomTarget<Bitmap>(512, 512) {
                        @Override
                        public void onResourceReady(@NonNull Bitmap bitmap1, @Nullable Transition<? super Bitmap> transition) {
                            imageView1.setImageBitmap(bitmap1);
                            MainActivity.this.bitmap1 = bitmap1;
                        }

                        @Override
                        public void onLoadCleared(@Nullable Drawable placeholder) {
                        }
                    });
        }
0 голосов
/ 13 января 2020

см. этот ответ

вы можете изменить размер своего растрового изображения следующим образом

import android.graphics.Matrix

public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(
        bm, 0, 0, width, height, matrix, false);
    bm.recycle();
    return resizedBitmap;
}
0 голосов
/ 13 января 2020

Когда вы столкнулись с проблемой OOM, вы можете удалить эту проблему с помощью

1) Уменьшить размер растрового изображения и

2) Увеличить размер приложения, изменив gradle.properties и файл AndroidManifest

gradle.properties org.gradle.jvmargs = -Xmx1536m

Android Манифест android: largeHeap = "true", android: hardwareAccelerated = "истина"

0 голосов
/ 13 января 2020

Попробуйте:

Bitmap resized_Bitmap = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
imageView.setImageBitmap( resized_Bitmap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...