Android tips(三)-->android拍照相片旋转问题
来源:互联网 发布:手机淘宝充值中心没有 编辑:程序博客网 时间:2024/06/03 02:12
转载请标明出处:一片枫叶的专栏
最近项目中需要使用拍照选择图片功能,但是测试时发现部分机型拍照之后图片存在旋转问题,特记录此问题。。。
android手机在拍照的时候竖屏拍摄,展示角度就是竖屏,如果是横屏拍摄,那么展示的时候已横屏的视角展示,此时旋转角度都是0(即总是展示水平方向的图片);
android系统拍照完成之后会使用一个ExifInterface对象保存图片信息,包含:地理位置,旋转角度,大小,拍摄时间等等,如下图:
使用Camera拍照以后得到的照片可能会被旋转(90度,180度,270度),这个情况不太符合预期,一个解决思路是得到图片之后获取其旋转角度,若图片被旋转,则将图片在旋转回来;
首先读取图片的旋转角度:
/** * 读取图片的旋转的角度 * * @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 != null && bm != returnBm) { bm.recycle(); } return returnBm; }
2 0
- Android tips(三)-->android拍照相片旋转问题
- android 拍照图片旋转问题
- android 拍照图片旋转问题
- Android 相片管理专题之拍照功能
- android选择相片和拍照保存
- android关于手机拍照图片旋转问题
- Android拍照后图片旋转问题
- 解决Android调用系统相机拍照后相片无法在相册中显示问题
- android高仿微信拍照、多选、预览、删除(去除相片)相册功能
- android调用系统相机拍照后对相片进行裁剪
- Android 7.0 调用系统相机拍照、裁剪相片
- Android开发拍照图片旋转
- 解决android部分机型拍照后被旋转的问题
- Android拍照、摄像方向旋转的问题 代码详解
- Android手机拍照上传旋转90度问题
- android 三星手机拍照裁剪后会旋转问题
- android解决相机拍照照片被旋转的问题
- Android拍照后获得的图片旋转90度问题
- 正则表达式30分钟入门教程
- Codeforces 612B HDD is Outdated Technology 【水题】
- Linux 机器重启reboot命令
- Android下的屏幕适配
- log4j.properties配置与加载应用
- Android tips(三)-->android拍照相片旋转问题
- Bash shell编程<六>:处理用户输入
- 列出android 声卡
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- Android Studio安装
- Java中ArrayList源码解析
- Educational Codeforces Round 5 C The Labyrinth DFS
- iOS 3D touch
- Git安装及配置