android应用里使用相机图片时必须要考虑的一个问题就是图片朝向,只有判断对朝向才能调整图片从而更好的展现。本文将介绍一种通过ExifInterface判断图片朝向的方法!

上代码:
/**
*
* 利用给定路径下的图片设置ImageView
*
* @param imgPath 手机图片文件路径
* @param imgView 需要设置的ImageView
*/
public void setImg(String imgPath, ImageView imgView) {
File file = new File(imgPath);
if (file.exists() && file.canRead()) {
// -------1.图片缩放--------
// 手机屏幕信息
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int dw = metric.widthPixels; // 屏幕宽
int dh = metric.heightPixels; // 屏幕高
// 加载图像,只是为了获取尺寸
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 设置之后可以获取尺寸信息
Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);
// 计算水平和垂直缩放系数
int heightRatio = (int) Math.ceil(options.outHeight / (float) dh);
int widthRatio = (int) Math.ceil(options.outWidth / (float) dw);
// 判断哪个大
if (heightRatio > 1 && widthRatio > 1) {
if (heightRatio > widthRatio) {
options.inSampleSize = heightRatio;
} else {
options.inSampleSize = widthRatio;
}
}
// 图片缩放
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(imgPath, options);
// -------2.判断图片朝向--------
try {
ExifInterface exif = new ExifInterface(imgPath);
int degree = 0; // 图片旋转角度
if (exif != null) {
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION, -1);
if (orientation != -1) {
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;
default:
break;
}
}
}
if (degree != 0) { // 图片需要旋转
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Matrix matrix = new Matrix();
matrix.preRotate(degree);
Bitmap mRotateBitmap = Bitmap.createBitmap(bitmap, 0, 0,
width, height, matrix, true);
imgView.setImageBitmap(mRotateBitmap);
} else {
imgView.setImageBitmap(bitmap);
}
} catch (IOException e) {
}
}
}
本代码包含两大功能:
1. 图片缩放:原始图片一般比较大,经过缩小才能使用;
2. 图片旋转:由于用户拍照时手机角度不同,所得照片可能需要旋转。
以上这篇android判断相机图片朝向的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# android判断相机图片朝向
# Android自定义组件获取本地图片和相机拍照图片
# Android启动相机拍照并返回图片
# 给大家
# 希望能
# 两大
# 一个问题
# 这篇
# 比较大
# 小编
# 大家多多
# 加载
# 必须要
# 水平和
# canRead
# DisplayMetrics
# getWindowManager
# metric
# File
# String
相关文章:
如何在企业微信快速生成手机电脑官网?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
c# 在高并发场景下,委托和接口调用的性能对比
如何快速选择适合个人网站的云服务器配置?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星图片链接生成指南:自助建站与智能设计教程
如何在IIS7中新建站点?详细步骤解析
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
建站之星代理如何获取技术支持?
广东企业建站网站优化与SEO营销核心策略指南
建站主机是什么?如何选择适合的建站主机?
建站VPS配置与SEO优化指南:关键词排名提升策略
独立制作一个网站多少钱,建立网站需要花多少钱?
学校建站服务器如何选型才能满足性能需求?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
头像制作网站在线制作软件,dw网页背景图像怎么设置?
c++怎么用jemalloc c++替换默认内存分配器【性能】
建站主机选择指南:服务器配置与SEO优化实战技巧
如何在IIS中新建站点并解决端口绑定冲突?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何用狗爹虚拟主机快速搭建网站?
html制作网站的步骤有哪些,iapp如何添加网页?
如何彻底卸载建站之星软件?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何通过宝塔面板实现本地网站访问?
如何选择服务器才能高效搭建专属网站?
Bpmn 2.0的XML文件怎么画流程图
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
广平建站公司哪家专业可靠?如何选择?
北京制作网站的公司,北京铁路集团官方网站?
建站主机如何安装配置?新手必看操作指南
建站之星如何保障用户数据免受黑客入侵?
如何在服务器上三步完成建站并提升流量?
如何确保FTP站点访问权限与数据传输安全?
北京专业网站制作设计师招聘,北京白云观官方网站?
平台云上自主建站:模板化设计与智能工具打造高效网站
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何配置WinSCP新建站点的密钥验证步骤?
长沙企业网站制作哪家好,长沙水业集团官方网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
建站之星如何取消后台验证码生成?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
网站制作公司,橙子建站是合法的吗?
建站主机是否等同于虚拟主机?
内网网站制作软件,内网的网站如何发布到外网?
如何在香港免费服务器上快速搭建网站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
*请认真填写需求信息,我们会在24小时内与您取得联系。