我有这个代码在用户选择后在图像按钮中显示图像。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Uri selectedImageUri = data.getData();
if (null != selectedImageUri) {
// Set the image in ImageView
_changePicture.setImageURI(selectedImageUri);
}
}
我的问题是,当选择一个大图像时,它会显示为向左旋转90度。我在stackoverflow.com找到了一些解决方案,但我不能使用它们中的任何一个,因为它们使用“Image”而我只使用“Uri”。
编辑: 使用像这样的代码:
public static void rotateImageIfRequired( Uri selectedImage) throws IOException {
ExifInterface ei = new ExifInterface(selectedImage.getPath());
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
Log.e(TAG,"ROTATE = 90");
case ExifInterface.ORIENTATION_ROTATE_180:
Log.e(TAG,"ROTATE = 180");
//return rotateImage(img, 180);
case ExifInterface.ORIENTATION_ROTATE_270:
Log.e(TAG,"ROTATE = 270");
//return rotateImage(img, 270);
default:
Log.e(TAG,"ROTATE = 0");
//return img;
}
}
返回“ROTATE = 0”。有些图像是几天前拍摄的。所有这些都很大。在小图像中不会发生旋转。
答案 0 :(得分:1)
您尝试使用Picasso Library了吗?如果您想了解更多相关信息,可以在GitHub上关注他们的示例。
要从设备加载图像,您可以使用:
File f = new File("path-to-image/image.png")
或
File f = new File(uri)
Picasso.with(getActivity()).load(f).into(imageView);
或
Picasso.with(getActivity()).load(uri).into(imageView);
毕加索还提供图像转换:
Picasso.with(context)
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)