全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android判断相机图片朝向的简单方法

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小时内与您取得联系。