使用某星手机有为应用的图库添加图片时,发现照片已被旋转,APP没有做任何处理,因此肯定是手机在拍照保存的时候做的手脚。
1、调用方法int degree = ImageUtil.getBitmapDegree(imageInfo.getImgSourcePath());
if(0 != degree)
ImageUtil.rotateBitmapByDegree(arg2, degree);
2.具体代码 /**
* 读取图片的旋转的角度
*
* @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();
bm = null;
}
return returnBm;
}
分享到:
相关推荐
调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌的手机都是正常的,就三星出现这个怪事。 在Android适配上,我原来一直以为国内的小米手机够奇葩...
android 解决部分手机拍照旋转问题
得到手机的陀螺仪采集到的角速率数据,然后转化为相对于初始位置旋转的角度。陀螺仪使用一段时间后会产生误差,本例未对误差进行处理,不过貌似可以用卡尔曼滤波算法消除误差,但是我不会。
Android手机点餐系统,包括客户端、服务器和数据库等
android自定义ImageView实现旋转动画
Android调用系统 拍照 相册 适配所有版本 7.0 恢复自动旋转
主要帮助大家完美解决了Android三星手机从图库选择照片旋转问题,很实用的解决小案例,感兴趣的小伙伴们可以参考一下
该项目包括调用系统相机拍照,和从系统选取图片,并对图片进行裁剪(仿微信做法),并解决三星手机拍照和选取照片角度旋转问题
android 之旋转罗盘 风车 开发 Android 随手指旋转图片.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android自定义拍照解决部分手机拍完之后图片不清楚的问题
1.一台手机运行程序后选择服务端,自动打开蓝牙及蓝牙被发现(手机的打开蓝牙被发现功能需要人工确认),等待被连接 2.另一台手机运行程序后选择客户端,自动搜索选择了服务端的手机,进行自动配对(第一次手机之间...
android 动态旋转图片 Bitmap与Matrix旋转ImageView
第10章“Android的电话部分”,介绍Android系统在电话方面的功能,Android是智能手机系统,电话是其核心部分。 第11章“Android的连接部分”,主要包括WiFi、蓝牙及定位系统等,这些Android的连接部分也具有从...
一个判断手机系统的工具类
一个简单的demo。使用android中的matrix属性,实现图片的放大、缩小、以及左旋转、右旋转。
基于android的自动点餐系统 主要涉及Listview的用法详解,创建数据库,系统自动上传信息,主要涉及客户端的源代码,布局文件,以及各个布局之间的关系与调用,可以让刻苦轻轻松松地坐在桌面上实现点菜系统。
android 仿音量旋转按钮,就是可以旋转的
Android 滑动效果 3D旋转,Animation动画实现