我的应用程序应该从图库中获取图片并将其显示在ImageView
中,我得到了我想要的所有图片,除了我带的<强大的>后置摄像头,他们出现在画廊让我挑选甚至返回路径,但我得到的只是ImageView
中的空白。
这是代码:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_PICK);
startActivityForResult(intent, SELECT_PICTURE);
我的onActivityResult代码是这样的:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && null != data) {
Uri uri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
ImageView iv = (ImageView) getView().findViewById(R.id.iv_foto);
iv.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
适用于使用前置摄像头拍摄的图像。
我没有在另一部手机上试过这个应用程序,但如果这种情况发生在我的手机上,很可能其他人会遇到同样的问题。
答案 0 :(得分:1)
原因是我认为记忆超出了指数。 请参阅此链接Compress camera image before upload,您可以参加
答案 1 :(得分:1)
问题在于图像的大小。
在Bitmap
ImageView
缩放问题的问题
Bitmap sourceBitmap = MediaStore.Images.Media.getBitmap(contentResolver, uri);
try {
Bitmap sourceBitmap = MediaStore.Images.Media.getBitmap(contentResolver, uri);
float rotationInDegrees = 0;
Cursor cursor = contentResolver.query(uri, new String[]{MediaStore.Images.ImageColumns.ORIENTATION},
null,
null,
null);
if (cursor != null && cursor.moveToFirst()) {
int col = cursor.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION);
if (col != -1)
rotationInDegrees = cursor.getInt(col);
cursor.close();
}
Matrix matrix = new Matrix();
matrix.preRotate(rotationInDegrees);
int width, height;
double aspectRatio;
aspectRatio = (double) sourceBitmap.getWidth() / sourceBitmap.getHeight();
if (sourceBitmap.getHeight() > sourceBitmap.getWidth()) {
height = MAX_IMAGE_DIMENSION;
width = (int) (height * aspectRatio);
} else {
width = MAX_IMAGE_DIMENSION;
height = (int) (width / aspectRatio);
}
sourceBitmap = Bitmap.createScaledBitmap(sourceBitmap, width, height, false);
return Bitmap.createBitmap(sourceBitmap, 0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight(), matrix, false);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("ImageHelper@getImageFromUri: IOException");
}
答案 2 :(得分:0)
即使在压缩之后如果你无法获得它,那么尝试使用一些库从图库中挑选图像。