在android多媒体开发中,ExifInterface(exif exchangeable image file) ,这个接口提供了图片文件的旋转,gps,时间等信息。

 Bitmap bitmap =null;
int scallType = 0;
try {
ExifInterface exifInterface = new ExifInterface(file.getPath());
int result = exifInterface.getAttributeInt(
ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
int rotate = 0;
switch(result) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
default:
break;
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
// 初めのデコードはサイズ取得のみ
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, options);
if (options.outWidth < 0 || options.outHeight < 0) {
return null;
}
scallType = genScallType(context, options);
options.inJustDecodeBounds = false;
bitmap=  BitmapFactory.decodeFile(filePath, options);
if(rotate > 0) {
Matrix matrix = new Matrix();
matrix.setRotate(rotate);
Bitmap rotateBitmap = Bitmap.createBitmap(
bitmap, 0, 0, options.outWidth, options.outHeight, matrix, true);
if(rotateBitmap != null) {
bitmap.recycle();
bitmap = rotateBitmap;
}
}
} catch (IOException e) {
e.printStackTrace();
} 

public int getAttributeInt (String tag, int defaultValue)

Since: API Level 5

Returns the integer value of the specified tag. If there is no such tag in the JPEG file or the value cannot be parsed as integer, return defaultValue.

(在指定的tag后,返回一个int类型的值,这里传入的是ExifInterface.TAG_ORIENTATION,所以会返回一个角度的int类型的值,当我们用android 平板电脑,或者手机横屏拍照片时并希望把它作为背景设置在所在的应用背景,而且不希望背景会产生旋转90度得现象)

ExifInterface 介绍相关推荐

  1. android摄像头方向与屏方向,Android通过ExifInterface判断Camera图片方向的方法

    Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向 图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Imag ...

  2. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  3. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  4. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  5. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  6. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  7. Pytest - 使用介绍

    1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...

  8. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  9. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

最新文章

  1. poj3169(差分约束+SPFA)
  2. 前端基于浏览器存储的AJAX性能优化
  3. 2021年春季学期-信号与系统-第八次作业参考答案-第六小题
  4. Java反射机制及API使用
  5. 安全挑战和SD-WAN解决方案
  6. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.4. 重点回顾)
  7. 20220211-CTF-MISC-006-pure_color(stegsolve工具的使用)-007-Aesop_secret(AES解密)
  8. mysql orderitems_【Mysql】教程全解(三)ORDER BY 排序
  9. 金三银四我带你去BAT面试现场,砥砺前行!
  10. 《Python CookBook2》 第四章 Python技巧 对象拷贝 通过列表推导构建列表
  11. mariadb 存储引擎mysql_MySQL/MariaDB---查询缓存与存储引擎
  12. Mockito + JUnit 单元测试实例
  13. 玩转小米盒子1:选购指南及应用推荐
  14. web页面和ssh登陆到防火墙
  15. 如何刷原生android系统版本,小米手机1原生Android4.1系统刷机教程
  16. ubuntu 安裝deb_Ubuntu离线安装deb包和依赖
  17. wifi 频段表_史上最全无线通信频率分配表,转走收藏!
  18. 道闸雷达感应技术使用,智能感应存在,飞睿科技毫米波雷达
  19. ARP和RARP协议工作原理
  20. 计算机毕业设计之仿12306火车票购票平台

热门文章

  1. 【前端面试】—— 谈职场
  2. 微软Outlook/Hotmail邮箱垃圾邮件问题已经解决
  3. js 的 slice 和 splice
  4. 并网系统和离网光伏系统有什么不同?
  5. Creator Cocos 获取舞台尺寸 (屏幕大小)
  6. log4j additivity解说
  7. pandas 字符串包含判断
  8. ERP实施顾问要怎么才能迅速提升自己。
  9. 记录一次微信小程序进行长连接通信使用emoji表情
  10. Oracle 用户解锁