1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android解决部分手机拍照照片自动旋转的问题

Android解决部分手机拍照照片自动旋转的问题

时间:2023-01-12 23:24:07

相关推荐

Android解决部分手机拍照照片自动旋转的问题

自定义相机开发的时候,会遇到这样的问题,部分手机拍照后显示在控件上是会发生自动旋转的问题。比如小米手机,三星,把横的拍成竖的,竖的拍成横的,但是其他品牌手机正常。

解决方案:根据图片的绝对路径,获取旋转角度信息,再进行旋转回来。

/*** 读取图片的旋转的角度** @param path* 图片绝对路径* @return 图片的旋转角度*/public static int getBitmapDegree(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;}/*** 将图片按照某个角度进行旋转** @param bm* 需要旋转的图片* @param degree* 旋转角度* @return 旋转后的图片*/public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {Bitmap returnBm = null;// 根据旋转角度,生成旋转矩阵Matrix matrix = new Matrix();matrix.postRotate(degree);try {// 将原始图片按照旋转矩阵进行旋转,并得到新的图片returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);} catch (OutOfMemoryError e) {}if (returnBm == null) {returnBm = bm;}if (bm != returnBm) {bm.recycle();}return returnBm;}

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