1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Bitmap-旋转】解决Android相机拍照之后照片的翻转问题

【Bitmap-旋转】解决Android相机拍照之后照片的翻转问题

时间:2023-12-20 11:11:56

相关推荐

【Bitmap-旋转】解决Android相机拍照之后照片的翻转问题

遇到的问题

今天处理图片,发现引用Camera图片库里面的照片的时候,发现拍的时候是正的,系统图库也是正的,自己引用的时候,就被翻转了,很是奇怪。查阅资料发现Android的相机天生就是横向的,拍摄照片的时候会携带上翻转的信息,系统相册会做处理。

解决方案

参考:/zmc/p/4022902.html

先给出一种解决方案:

步骤一:先获取照片属性中的翻转信息

/*** 获取照片属性中的旋转角度** @param path 图片的绝对路径* @return 照片属性中的旋转角度*/@RequiresPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)public static int getOrientationRotate(String path) {int degree = 0;try {// 从指定路径下读取图片,并获取其Exif信息ExifInterface exifInterface = new ExifInterface(path);// 获取图片的旋转信息int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:degree = 90;break;case ExifInterface.ORIENTATION_ROTATE_180:degree = 180;break;case ExifInterface.ORIENTATION_ROTATE_270:degree = 270;break;}} catch (IOException e) {e.printStackTrace();}return degree;}

步骤二:旋转一下Bitmap

/*** 根据角度值旋转Bitmap** @param bitmap* @param degree* @return*/private static Bitmap rotateBitmapByDegree(Bitmap bitmap, int degree) {// 根据旋转角度,得到旋转矩阵Matrix matrix = new Matrix();matrix.postRotate(degree);// 将原始图片按照旋转矩阵进行旋转,得到新的图片Bitmap result = null;try {result = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);} catch (OutOfMemoryError e) {e.printStackTrace();result = bitmap;}if (bitmap != result) {bitmap.recycle();}return result;}

不过这种方式总觉得不是很畅快,等待更好的解决方案吧。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。