我已经实现了第二个答案(使用下采样)。当我选择纵向图像时,图像将以横向模式显示..有人知道这是为什么吗?以及如何解决这个问题?提前致谢!
Ps 抱歉,我已经为此创建了一个新主题,但海报保护了他的主题免受像我这样的新手 :)
我已经实现了第二个答案(使用下采样)。当我选择纵向图像时,图像将以横向模式显示..有人知道这是为什么吗?以及如何解决这个问题?提前致谢!
Ps 抱歉,我已经为此创建了一个新主题,但海报保护了他的主题免受像我这样的新手 :)
你必须得到图片的exif旋转,像这样并相应地安排你的位图
public static int getExifRotation(String imgPath)
{
try
{
ExifInterface exif = new ExifInterface(imgPath);
String rotationAmount = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
if (!TextUtils.isEmpty(rotationAmount))
{
int rotationParam = Integer.parseInt(rotationAmount);
switch (rotationParam)
{
case ExifInterface.ORIENTATION_NORMAL:
return 0;
case ExifInterface.ORIENTATION_ROTATE_90:
return 90;
case ExifInterface.ORIENTATION_ROTATE_180:
return 180;
case ExifInterface.ORIENTATION_ROTATE_270:
return 270;
default:
return 0;
}
}
else
{
return 0;
}
}
catch (Exception ex)
{
return 0;
}
}
获取图片的路径
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
薄制作一个矩阵并使用使用矩阵的位图构造函数
Matrix matrix = new Matrix();
matrix.preRotate(90);
// or
matrix.postRotate(90);
所以在你的 onActivityResult 你应该有这样的东西
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
orientation = getExifRotation(selectedImagePath);
Matrix matrix = new Matrix();
matrix.postRotate(90);
if(orientation == 90){
bitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(),
matrix, true);}
确保你先重新采样你的图像,所以他是如何在他的答案中得到它,然后再这样做