簡體   English   中英

從圖庫中選擇圖像時,應用程序崩潰

[英]app crashes when select image from gallery

我需要從圖庫中選擇一個,以對其實施過濾器。 我使用以下代碼在應用中打開圖庫:

 var intent = Intent(Intent.ACTION_PICK)
                    intent.setType("image/*")
                    startActivityForResult(intent, PERMISSION_CODE)

活動結果:

 if (resultCode == Activity.RESULT_OK && requestCode == PERMISSION_CODE) {
            var bitmap: Bitmap = BitmapUtils.getBitmapFromGallery(this, data?.data, 800, 800)
            original_filter_bitmap.recycle()
            final_bitmap.recycle()
            filtered_bitmap.recycle()
            original_filter_bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true)
            final_bitmap = original_filter_bitmap.copy(Bitmap.Config.ARGB_8888, true)
            filtered_bitmap = original_filter_bitmap.copy(Bitmap.Config.ARGB_8888, true)
            image_preview.setImageBitmap(original_filter_bitmap)
            bitmap.recycle()
         //   imageFiltersFragment.displayThumbNail(original_filter_bitmap)
        }

這是從圖庫方法的位圖獲取的:

(Context context, Uri uri, int width, int height) {
        String[] filepathcolumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = context.getContentResolver().query(uri, filepathcolumn, null, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filepathcolumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(picturePath, options);
        options.inSampleSize = calculateInSampleSize(options, width, height);
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(picturePath, options);
    }

因此,圖庫會打開,我選擇圖像,然后按圖像應用程序崩潰。

Logcat:

Caused by: java.lang.IllegalStateException: BitmapUtils.getBitmapFro…is, data?.data, 800, 800) must not be null
        at com.example.sg772.textonimage.MainActivity.onActivityResult(MainActivity.kt:191)

第191行: var bitmap: Bitmap = BitmapUtils.getBitmapFromGallery(this, data?.data, 800, 800)

data?.data可能為null。

data?.data?.let {
    val bitmap = BitmapUtils.getBitmapFromGallery(this, it, 800, 800)
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM