在Android开发过程中,几乎每个应用都会或多或少的涉及到对图片的处理。经常遇到的一个情况就是,取得的图片是横着的,而实际需要的图片是正着的,也就是竖着的。这里就涉及到对图片横坚情况的判断,也就是图片的当前的角度。然后根据角度来纠正,得到想要的图片。

在Android的源代码里提供了一个专门读写图片信息的类ExifInterface,官方给出的注释为:This is a class for reading and writing Exif tags in a JPEG file ,可见ExifInterface是专门用来读写JPEG图片文件Exif信息的类。

Exif信息里面就包括了角度,GPS经纬度,白平衡,闪光灯等信息。ExifInterface的用法相对简单,只有一个带参的构造方法,将图片文件地址传过去就可以了。类里提供了getAttribute方法来取得各种属性,当得也可以用setAttribute方法来为已存在的图片设置或修改其本来属性。

下面贴上代码:

 /*** 读取图片属性:旋转的角度* @param path 图片绝对路径* @return degree旋转的角度*/public static int readPictureDegree(String path) {int degree = 0;try {ExifInterface exifInterface = new ExifInterface(path);int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);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;}} catch (IOException e) {e.printStackTrace();return degree;}return degree;}

能过以上方法得到图片角度后,就可以通过Matrix类对图片进行纠正了,还是贴上完整的代码,如下:

 /*** 旋转图片,使图片保持正确的方向。* @param bitmap 原始图片* @param degrees 原始图片的角度* @return Bitmap 旋转后的图片*/public static Bitmap rotateBitmap(Bitmap bitmap, int degrees) {if (degrees == 0 || null == bitmap) {return bitmap;}Matrix matrix = new Matrix();matrix.setRotate(degrees, bitmap.getWidth() / 2, bitmap.getHeight() / 2);Bitmap bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);if (null != bitmap) {bitmap.recycle();}return bmp;}

通过以上两个步骤,就可以得到一个正着的图片了。当然中间省略了一步:

   Bitmap bmp =BitmapFactory.decodeFile(imageFilePath);

Android 根据角度旋转图片相关推荐

  1. 任意角度旋转图片的ground truth目标检测框

    任意角度旋转图片的ground truth目标检测框 (感谢前辈)转自:https://zhuanlan.zhihu.com/p/72129125 因为检测一个物体的时候需要对目标进行多个任意角度的旋 ...

  2. android glide 4旋转图片,Android 效率开发之图片---Glide 旋转图片处理

    事实上Glide会对旋转的图片正确处理,比如你在三星手机上拍照旋转了90度,用Glide 加载的话,会正确显示. 通过Glide 强大的图片变换功能,我们也可以旋转图片,关于Glide 的图片变换请参 ...

  3. android 之旋转罗盘 风车 开发 Android 随手指旋转图片

    原帖地址 源码下载地址 我要介绍的是一个 能旋转的view,说这个view能旋转有点不切实际,那是视觉效果,其实是对图片的旋转.目前它只支持图片.你可以把它认为是一个能响应手势旋转的View. 它的功 ...

  4. 在word中输入任意角度旋转图片

    Sub 图片旋转任意角度() Dim sha As Shape, isa As InlineShapeStatic s As IntegerApplication.ScreenUpdating = 0 ...

  5. JAVA对图片的任意角度旋转,以及镜像操作

    package relevantTest; /*  * 该代码实现了对图像的水平镜像变换,垂直镜像变换,任意角度旋转,jtf的实时监控,以及对图像的缩放变换,以及按钮的若隐若现效果.  * 在对图像进 ...

  6. java旋转图片并画出_java实现图片角度旋转并获得图片信息

    本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下 public class demo { /** * 调整图片角度 * make by dongxh 20 ...

  7. java 旋转图片_Java实现图片翻转以及任意角度旋转

    最近几天在做一个项目,因为涉及到了图片(绝大部分都不是整图,是把一张张的大图切成小图,也就是Title)的翻转以及90°旋转,弄得焦头烂额.在网上搜索好几天,发现用到的方法都是比较公式化的,对于只是在 ...

  8. C# 图片处理之:旋转图片任意角度

    以上C#数字图像处理的相关文章均转自:k1381的专栏 http://blog.csdn.net/ki1381/category/240835.aspx?PageNumber=1 在此特别感谢!! 拍 ...

  9. android视频自动旋转,Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转...

    最近因为项目需求 ,需要播放网络视频 ,于是乎 研究了一番 ,说说我遇到的那些坑 现在市面上有几个比较主流好用的第三方框架 当然还有很多别的视频播放框架 因为我只找到这几个= =! 因为项目比较急,所 ...

最新文章

  1. SpringBoot+Jquery实现前后端数据交互
  2. 专访:混合云的发展趋势
  3. MyBatis 自定义 typeHandler
  4. SharePoint Web Service系列: Add或Update其他各种类型的项
  5. 第一章:开始启程-你的第一行Android代码
  6. 信号公式汇总之拉普拉斯变换
  7. 数字图像处理实验一 直方图均衡化与直方图规定化
  8. ATA和ATAPI类型硬盘区别方法
  9. java简单识别闰年和平年问题
  10. [ZT]狄马:老子与美国南北战争
  11. 食品饮料行业商业供应链智能系统解决方案:智慧供应链平台助力企业搭乘数字化快车乘风破浪
  12. 工业以太网交换机和普通交换机的区别 热设计为例
  13. 带下波浪线的textView
  14. linux内核编程13期:内存管理
  15. 64位linux安装adobe flash play插件
  16. 约束(constrain)
  17. 什么是COM? 什么是COM+?
  18. 华为LAB实验室4-朴素贝叶斯
  19. 解决宏碁非凡S3 安装Win11时无法找到驱动器问题
  20. Python灰帽子--黑客与逆向工程师的Python编程之道 笔记,过程问题解决

热门文章

  1. python实现网络编程 之Twisted框架
  2. Water in Unity 使用Unity提供的水效果
  3. Intellij IDEA)- git - 创建项目
  4. 图像处理项目——基于机器视觉技术的人脸在线识别系统设计
  5. java注解注入空,Spring4.3.7注解 @Autowired java.lang.NullPointerException
  6. 一台服务器怎么玩才有意思?
  7. Oracle中的CHR()函数
  8. 用仿ActionScript的语法来编写html5——第五篇,Graphics绘图
  9. 16位深度图(depth map)伪彩色化(pseudo colorize)的代码
  10. 扫码报修小程序,设备巡检功能