3 回答
TA贡献1797条经验 获得超6个赞
如果使用数码相机或智能手机拍摄照片,则旋转通常作为图像文件的一部分存储在照片的Exif数据中。您可以使用Android读取图像的Exif元数据ExifInterface。
首先,创建ExifInterface:
ExifInterface exif = new ExifInterface(uri.getPath());
接下来,找到当前旋转:
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
将exif旋转转换为度数:
int rotationInDegrees = exifToDegrees(rotation);
哪里
private static int exifToDegrees(int exifOrientation) {
if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) { return 90; }
else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) { return 180; }
else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) { return 270; }
return 0;
}
然后,以图像的实际旋转为参考点,使用来旋转图像Matrix。
Matrix matrix = new Matrix();
if (rotation != 0) {matrix.preRotate(rotationInDegrees);}
使用将Bitmap.createBitmapa Matrix作为参数的方法来创建新的旋转图像:
Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
其中Matrix m拥有新的轮换:
Bitmap adjustedBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
- 3 回答
- 0 关注
- 787 浏览
添加回答
举报