我需要将图片旋转为肖像。我用exif编写了这个方法:
private static Bitmap rotateBitmap(Bitmap sourceBitmap) throws java.io.IOException{
int width = sourceBitmap.getWidth();
int height = sourceBitmap.getHeight();
Matrix matrix = new Matrix();
ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch(orientation) {
case ExifInterface.ORIENTATION_NORMAL:
break;
case ExifInterface.ORIENTATION_ROTATE_90:
matrix.postRotate(90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
matrix.postRotate(180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
matrix.postRotate(270);
break;
}
if (orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270) {
return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
}
else {
return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
}
}
对于ORIENTATION_ROTATE_180或ORIENTATION_NORMAL,此方法可以正常工作。
对于ORIENTATION_ROTATE_270或ORIENTATION_ROTATE_90,此方法会在宽度维度中拉伸图片。我试图用高度切换宽度,应用程序崩溃了。
我需要这种方法来旋转位图,并且不会损失它之前的质量或比例。
我该怎么做?