android解决相机拍照照片被旋转的问题
2015-12-12 11:14
676 查看
在部分Android手机(如MT788、Note2)上,使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°),这个情况很不符合预期。仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法中,获取到照片数据后,读取它的旋转信息,如果不是0,说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。
以下两个方法直接调用后就可解决拍照或者旋转图库图片被旋转的问题~
1、读取图片的旋转属性
2、将图片按照某个角度进行旋转
以下两个方法直接调用后就可解决拍照或者旋转图库图片被旋转的问题~
1、读取图片的旋转属性
> /** * 读取图片的旋转的角度 * * @param path * 图片绝对路径 * @return 图片的旋转角度 */ private 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; }
2、将图片按照某个角度进行旋转
/** * 将图片按照某个角度进行旋转 * * @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; }
相关文章推荐
- MPAndroidChart 教程:概述
- 第三方开源Android TickPlusDrawable状态可以通过动画切换的按钮
- Android自定义属性以及组合View
- Android编程实现将应用强制安装到手机内存的方法
- 【Android高级】高斯模糊效果从319ms到3ms的优化实现
- Android Studio1.5 编译优化
- Android StatusBar
- Android打包时出现"Conversion to Dalvik format failed with error 1"
- Android仿String的对象驻留示例分析
- 读《50 Android Hacks》笔记整理Hack 41~Hack 43
- javah命令的问题 最常见的 错误: 找不到类android.app.Activity。
- Android打包时出现fatal lint error
- Android编程实现TextView部分颜色变动的方法
- android布局ScrollView包含ListView
- Android获取手机和应用的相关信息
- Android总结
- Android中Scrollview、ViewPager、ListView,使ScrollView滑动到开始的位置。
- Android Studio——Android TextUtils类介绍
- Android中scrollview的scrollto方法不起作用的办法
- 彻底理解android中的内部存储与外部存储