android 图片方向,Android图片处理:识别图像方向并显示实例教程
在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图片处理:识别图像方向并显示实例教程相关推荐
- android 图片方向,Android图片处理:识别图像方向并显示
在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...
- android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)
在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走:1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. 一 ...
- python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...
- python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)
①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...
- android dhcp 服务器,android 获取当前手机的 DHCP 信息ip,server 等操作实例教程
android 获取当前手机的 DHCP 信息ip,server 等操作实例教程WifiManager wifiManager = (WifiManager) getSystemService(Con ...
- 迁移学习+TfLite Android构建自己的喵咪识别APP(一)
迁移学习+TfLite Android构建自己的喵咪识别APP(一) 本教程是我自己实践过程的记录,具体的理论细节请参照其他博客 一.基础知识 官方实践教程一: 迁移学习实现图像分类器 https:/ ...
- android exifinterface 图片大小,Android图像resize和保存EXIF数据(方向,旋转等)
Android图像resize和保存EXIF数据(方向,旋转等) 如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥 ...
- 19 Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- android摄像头方向与屏方向,Android通过ExifInterface判断Camera图片方向的方法
Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向 图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Imag ...
- android studio点击图片,如何在Android Studio中的模拟器图库中添加图像?
如何在Android Studio中的模拟器图库中添加图像? 我正在开发图像过滤器应用程序. 但是,如果我没有任何图像,就无法真正尝试. 我知道我可以在电话中对其进行测试,但这并不相同,因为我需要错误 ...
最新文章
- 清华博士接亲被要求现场写代码,新娘:提醒他吃饭的手艺不能忘!
- Visual Studio2008的微软官方下载地址
- 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定
- gridview汇出EXCEL (ExportGridViewToExcel(dt, HttpContext.Current.Response);)
- 贾扬清撰文详解Caffe2:从强大的新能力到入门上手教程
- C语言数组、字符与字符串笔记
- 查看大日志文件的专门工具logviewer
- JavaScript逻辑运算符“”和“||”短路原则的应用
- 聊一聊FPGA的片内资源相关知识
- Swift中可能失败的构造器的传播(调用)和重写
- 配音软件文字转语音有哪些?
- 四旋翼飞行器避障系统基础
- 最大似然估计 高斯分布 正态分布
- 富贵竹叶子发黄怎么办?
- C盘可用空间无法完全压缩卷解决方法
- 卡西欧计算机储存数据,卡西欧计算器(统计计算)操作.ppt
- html5页面嵌入pdf,html5嵌入内容.pdf
- 全球及中国辉光放电质谱仪(GDMS)市场商业模式与十四五投资战略规划研究报告2022-2028年
- java实现微博_java实现的新浪微博分享代码实例
- 手动杀掉AUTORUN病毒.