无法将图像从 SD 卡加载到 canvas
Unable to load image from sdcard to canvas
如何从 SD 卡加载图像到 canvas。我试过这段代码,但它不起作用。
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);
这段代码有什么问题?
我不知道这个 Uri
来自哪里。然而:
摆脱所有 MediaStore
东西
使用 ContentResolver
和 openInputStream()
得到 InputStream
由 Uri
[=46= 标识的内容]
使用BitmapFactory.decodeStream()
从该流解码
还有:
确保您请求 READ_EXTERNAL_STORAGE
或 WRITE_EXTERNAL_STORAGE
,包括处理运行时权限
最终,将 openInputStream()
和 decodeStream()
工作移至后台线程
如何从 SD 卡加载图像到 canvas。我试过这段代码,但它不起作用。
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);
这段代码有什么问题?
我不知道这个 Uri
来自哪里。然而:
摆脱所有
MediaStore
东西使用
[=46= 标识的内容]ContentResolver
和openInputStream()
得到InputStream
由Uri
使用
BitmapFactory.decodeStream()
从该流解码
还有:
确保您请求
READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
,包括处理运行时权限最终,将
openInputStream()
和decodeStream()
工作移至后台线程