在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. awesome xjtlu github project
  2. linux系统调试网络,linux系统命令(网络相关的调试命令)
  3. Oracle入门(十三)之SQL的DML
  4. php通过实现excel导入,php实现excel导入数据
  5. Ubuntu 18.04/20.04 部署minikube
  6. 远程显示协议对比:RemoteFX vs. HDX vs. PCoIP
  7. 前端性能优化的几种方案
  8. win10教育版激活部分方法
  9. Windows显示文件名后缀的方法
  10. 我爱淘冲刺阶段站立会议2每天任务6
  11. 四六级英语听力软件测试,三款精品英语听力软件,提高四六级听力有诀窍
  12. android获取SIM卡信息和手机号码
  13. 计算机没有显卡驱动,电脑没有显卡怎么办
  14. ABAQUS|多重约束的解决办法!(过约束/螺栓预紧力)
  15. 基础课程11:调试工具
  16. “隐私—数据收集”问题的两难分析
  17. 我的资源里边有好东西(gmt、panoply等等)
  18. 12、FPGA程序的固化和下载
  19. ES聚合之Bucket聚合语法讲解
  20. ESD防静电门禁系统详解

热门文章

  1. 南邮CTF:密码学 骚年来一发吗
  2. 程序员们平时都喜欢逛什么论坛?我总结了几十个!
  3. 添加盐值生成加密密码
  4. FATE:工业级联邦学习开源生态建设经验分享
  5. DEPENDENT SUBQUERY 优化
  6. 中药PK西药之咽喉炎治疗
  7. 账号管理 php,管理员admin账号管理工具
  8. 蚁剑的下载与一句话木马
  9. 铁威马NAS教程之如何为NAS创建新用户
  10. python 将字符串时间转换为date对象