如何将图像从SD卡加载到画布。我尝试了这段代码但它无法正常工作。
Uri selectedImage = data.getData();
if (selectedImage == null) {
Log.e(getString(R.string.app_name), "selected image uri is null");
return;
}
String[] filePath = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePath, null, null, null);
if(cursor==null){
Log.e(getString(R.string.app_name), "image cursor is null");
return;
}
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
cursor.close();
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
Bitmap bitmap2 = Bitmap.createBitmap(bitmap.getHeight(),bitmap.getWidth(),bitmap.getConfig());
mCanvas.setBitmap(bitmap2);
Paint p = new Paint();
mCanvas.drawBitmap(bitmap,0,0,p);
此代码有什么问题?
答案 0 :(得分:1)
我不知道Uri
来自哪里。但是:
摆脱所有MediaStore
内容
使用ContentResolver
和openInputStream()
获取InputStream
Uri
使用BitmapFactory.decodeStream()
从该流解码
此外:
确保您请求READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
,包括处理运行时权限
最后,将openInputStream()
和decodeStream()
工作移至后台主题