Android 根据角度旋转图片
在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 根据角度旋转图片相关推荐
- 任意角度旋转图片的ground truth目标检测框
任意角度旋转图片的ground truth目标检测框 (感谢前辈)转自:https://zhuanlan.zhihu.com/p/72129125 因为检测一个物体的时候需要对目标进行多个任意角度的旋 ...
- android glide 4旋转图片,Android 效率开发之图片---Glide 旋转图片处理
事实上Glide会对旋转的图片正确处理,比如你在三星手机上拍照旋转了90度,用Glide 加载的话,会正确显示. 通过Glide 强大的图片变换功能,我们也可以旋转图片,关于Glide 的图片变换请参 ...
- android 之旋转罗盘 风车 开发 Android 随手指旋转图片
原帖地址 源码下载地址 我要介绍的是一个 能旋转的view,说这个view能旋转有点不切实际,那是视觉效果,其实是对图片的旋转.目前它只支持图片.你可以把它认为是一个能响应手势旋转的View. 它的功 ...
- 在word中输入任意角度旋转图片
Sub 图片旋转任意角度() Dim sha As Shape, isa As InlineShapeStatic s As IntegerApplication.ScreenUpdating = 0 ...
- JAVA对图片的任意角度旋转,以及镜像操作
package relevantTest; /* * 该代码实现了对图像的水平镜像变换,垂直镜像变换,任意角度旋转,jtf的实时监控,以及对图像的缩放变换,以及按钮的若隐若现效果. * 在对图像进 ...
- java旋转图片并画出_java实现图片角度旋转并获得图片信息
本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下 public class demo { /** * 调整图片角度 * make by dongxh 20 ...
- java 旋转图片_Java实现图片翻转以及任意角度旋转
最近几天在做一个项目,因为涉及到了图片(绝大部分都不是整图,是把一张张的大图切成小图,也就是Title)的翻转以及90°旋转,弄得焦头烂额.在网上搜索好几天,发现用到的方法都是比较公式化的,对于只是在 ...
- C# 图片处理之:旋转图片任意角度
以上C#数字图像处理的相关文章均转自:k1381的专栏 http://blog.csdn.net/ki1381/category/240835.aspx?PageNumber=1 在此特别感谢!! 拍 ...
- android视频自动旋转,Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转...
最近因为项目需求 ,需要播放网络视频 ,于是乎 研究了一番 ,说说我遇到的那些坑 现在市面上有几个比较主流好用的第三方框架 当然还有很多别的视频播放框架 因为我只找到这几个= =! 因为项目比较急,所 ...
最新文章
- SpringBoot+Jquery实现前后端数据交互
- 专访:混合云的发展趋势
- MyBatis 自定义 typeHandler
- SharePoint Web Service系列: Add或Update其他各种类型的项
- 第一章:开始启程-你的第一行Android代码
- 信号公式汇总之拉普拉斯变换
- 数字图像处理实验一 直方图均衡化与直方图规定化
- ATA和ATAPI类型硬盘区别方法
- java简单识别闰年和平年问题
- [ZT]狄马:老子与美国南北战争
- 食品饮料行业商业供应链智能系统解决方案:智慧供应链平台助力企业搭乘数字化快车乘风破浪
- 工业以太网交换机和普通交换机的区别 热设计为例
- 带下波浪线的textView
- linux内核编程13期:内存管理
- 64位linux安装adobe flash play插件
- 约束(constrain)
- 什么是COM? 什么是COM+?
- 华为LAB实验室4-朴素贝叶斯
- 解决宏碁非凡S3 安装Win11时无法找到驱动器问题
- Python灰帽子--黑客与逆向工程师的Python编程之道 笔记,过程问题解决
热门文章
- python实现网络编程 之Twisted框架
- Water in Unity 使用Unity提供的水效果
- Intellij IDEA)- git - 创建项目
- 图像处理项目——基于机器视觉技术的人脸在线识别系统设计
- java注解注入空,Spring4.3.7注解 @Autowired java.lang.NullPointerException
- 一台服务器怎么玩才有意思?
- Oracle中的CHR()函数
- 用仿ActionScript的语法来编写html5——第五篇,Graphics绘图
- 16位深度图(depth map)伪彩色化(pseudo colorize)的代码
- 扫码报修小程序,设备巡检功能