在Android中使用ImageView显示图片的时候发现图片显示不正,方向偏了或者倒过来了。

解决这个问题很自然想到的分两步走:

1、自动识别图像方向,计算旋转角度;

2、对图像进行旋转并显示。

一、识别图像方向

首先在这里提一个概念EXIF(Exchangeable Image File Format,可交换图像文件),具体解释参见Wiki。

简而言之,Exif是一个标准,用于电子照相机(也包括手机、扫描器等)上,用来规范图片、声音、视屏以及它们的一些辅助标记格式。

Exif支持的格式如下:

图像

压缩图像文件:JPEG、DCT

非压缩图像文件:TIFF

不支持:JPEG 2000、PNG、GIF

音频

RIFF、WAV

Android提供了对JPEG格式图像Exif接口支持,可以读取JPEG文件Metadata信息,参见ExifInterface.

这些Metadata信息总的来说大致分为三类:日期时间、空间信息(经纬度、高度)、Camera信息(孔径、焦距、旋转角、曝光量等等)。

二、图像旋转

Android中提供了对Bitmap进行矩阵旋转的操作,参见Bitmap提供的静态createBitmap方法.

public static Bitmap createBitmap (Bitmap source,int x,int y,int width,int height,Matrix m,boolean filter)

IllegalArgumentException if the x,y,width,height values are outside of the dimensions of the source bitmap.

到此这两个问题理论上都解决了,开始实际操作一下吧,参照以下代码。

public class IOHelper {

......

/** 从给定路径加载图片*/

public static Bitmap loadBitmap(String imgpath) {

return BitmapFactory.decodeFile(imgpath);

}

/** 从给定的路径加载图片,并指定是否自动旋转方向*/

public static Bitmap loadBitmap(String imgpath,boolean adjustOritation) {

if (!adjustOritation) {

return loadBitmap(imgpath);

} else {

Bitmap bm = loadBitmap(imgpath);

int digree = 0;

ExifInterface exif = null;

try {

exif = new ExifInterface(imgpath);

} catch (IOException e) {

e.printStackTrace();

exif = null;

}

if (exif != null) {

// 读取图片中相机方向信息

int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,

ExifInterface.ORIENTATION_UNDEFINED);

// 计算旋转角度

switch (ori) {

case ExifInterface.ORIENTATION_ROTATE_90:

digree = 90;

break;

case ExifInterface.ORIENTATION_ROTATE_180:

digree = 180;

break;

case ExifInterface.ORIENTATION_ROTATE_270:

digree = 270;

break;

default:

digree = 0;

break;

}

}

if (digree != 0) {

// 旋转图片

Matrix m = new Matrix();

m.postRotate(digree);

bm = Bitmap.createBitmap(bm,bm.getWidth(),

bm.getHeight(),m,true);

}

return bm;

}

}

......

}

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android 图片方向,Android图片处理:识别图像方向并显示实例教程相关推荐

  1. android 图片方向,Android图片处理:识别图像方向并显示

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...

  2. android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走:1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. 一 ...

  3. python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  4. python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  5. android dhcp 服务器,android 获取当前手机的 DHCP 信息ip,server 等操作实例教程

    android 获取当前手机的 DHCP 信息ip,server 等操作实例教程WifiManager wifiManager = (WifiManager) getSystemService(Con ...

  6. 迁移学习+TfLite Android构建自己的喵咪识别APP(一)

    迁移学习+TfLite Android构建自己的喵咪识别APP(一) 本教程是我自己实践过程的记录,具体的理论细节请参照其他博客 一.基础知识 官方实践教程一: 迁移学习实现图像分类器 https:/ ...

  7. android exifinterface 图片大小,Android图像resize和保存EXIF数据(方向,旋转等)

    Android图像resize和保存EXIF数据(方向,旋转等) 如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥 ...

  8. 19 Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

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

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

  10. android studio点击图片,如何在Android Studio中的模拟器图库中添加图像?

    如何在Android Studio中的模拟器图库中添加图像? 我正在开发图像过滤器应用程序. 但是,如果我没有任何图像,就无法真正尝试. 我知道我可以在电话中对其进行测试,但这并不相同,因为我需要错误 ...

最新文章

  1. 清华博士接亲被要求现场写代码,新娘:提醒他吃饭的手艺不能忘!
  2. Visual Studio2008的微软官方下载地址
  3. 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定
  4. gridview汇出EXCEL (ExportGridViewToExcel(dt, HttpContext.Current.Response);)
  5. 贾扬清撰文详解Caffe2:从强大的新能力到入门上手教程
  6. C语言数组、字符与字符串笔记
  7. 查看大日志文件的专门工具logviewer
  8. JavaScript逻辑运算符“”和“||”短路原则的应用
  9. 聊一聊FPGA的片内资源相关知识
  10. Swift中可能失败的构造器的传播(调用)和重写
  11. 配音软件文字转语音有哪些?
  12. 四旋翼飞行器避障系统基础
  13. 最大似然估计 高斯分布 正态分布
  14. 富贵竹叶子发黄怎么办?
  15. C盘可用空间无法完全压缩卷解决方法
  16. 卡西欧计算机储存数据,卡西欧计算器(统计计算)操作.ppt
  17. html5页面嵌入pdf,html5嵌入内容.pdf
  18. 全球及中国辉光放电质谱仪(GDMS)市场商业模式与十四五投资战略规划研究报告2022-2028年
  19. java实现微博_java实现的新浪微博分享代码实例
  20. 手动杀掉AUTORUN病毒.

热门文章

  1. 命令行配置Windows SNMP服务
  2. LAMP详细搭建步骤
  3. js执行函数报错Cannot set property 'value' of null
  4. 2.算法通关面试 --- 堆栈和队列
  5. 8. Linux 文件与目录管理
  6. 71. 尽早刷新文档的输出
  7. 46. PHP 数据库
  8. [洛谷P1501][国家集训队]Tree II(LCT)
  9. SQL BETWEEN
  10. 【Luogu】P1972HH的项链(链表+树状数组)