Android查看Jpg图片出现颠倒的问题
编者:李国帅
qq:9611153 微信lgs9611153
时间:2018/11/12
背景原因:
今天遇到了一个问题,IOS患者端发送的图片,android端显示的时候,图片颠倒了。
从消息拿到苹果端用户端上传的图片http://*****8/group1/M00/00/2D/Coc6wVvo2cOAY0--AAo8PMDwxOI556.jpg
测试图像是否颠倒:
1、下载图片看,图像颠倒
2、使用ie浏览器看,图像颠倒
3、使用火狐浏览器看,图像正常,但是下载之后在pc上看也是颠倒的。
4、使用android程序看,图像颠倒
5、使用ios看,图像正常
原因分析
苹果端上传的图片中使用了 EXIF标记,并且其旋转标记为90度(Rotate 90 CW)。
如果直接打开图片 chrome 或火狐浏览器会自动调整过来。
什么是EXIF?
EXIF(Exchangeable Image File format)是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
EXIF可以附加于JPEG、TIFF、RIFF、RAW等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。
使用exif分析工具对Coc6wVvo2cOAY0--AAo8PMDwxOI556.jpg进行分析
查询结果
EXIF信息摘要
色彩 |
白平衡:, 色彩空间:sRGB |
File
FileType |
JPEG |
FileTypeExtension |
jpg |
MIMEType |
image/jpeg |
ExifByteOrder |
Big-endian (Motorola, MM) |
CurrentIPTCDigest |
d41d8cd98f00b204e9800998ecf8427e |
ImageWidth |
4032 |
ImageHeight |
3024 |
EncodingProcess |
Baseline DCT, Huffman coding |
BitsPerSample |
8 |
ColorComponents |
3 |
YCbCrSubSampling |
YCbCr4:2:0 (2 2) |
JFIF
JFIF版本 |
1.01 |
分辨率单位 |
None |
X轴分辨率 |
72 |
Y轴分辨率 |
72 |
IFD0
方向 |
Rotate 90 CW |
ExifIFD
色彩空间 |
sRGB |
Exif图像宽度 |
4032 |
Exif图像高度 |
3024 |
Photoshop
IPTCDigest |
d41d8cd98f00b204e9800998ecf8427e |
Composite
图像尺寸 |
4032x3024 |
Megapixels |
12.2 |
解决方案:
在苹果端上更改的方法如下:
传图片的时候不使用旋转90度的设置。
在android端更改的方法如下:
1、使用Android中ExifInterface接口
此接口倒是可以读取exif内容,但是必须是api level 24及以上,这样一来这个方法就不太好了。
2、使用Glide库Exif信息的处理
Android的第三方Glide图像处理库内部已经实现了Exif处理,但是现有程序直接使用了基本的android图像库比较方便,求人不如求己,如果刚开始做倒是可以使用。
Android查看Jpg图片出现颠倒的问题相关推荐
- android 点击网络图片大全,android查看网络图片的实现方法
本文实例为大家分享了android查看网络图片的具体代码,供大家参考,具体内容如下 需求描述: 输入一个 图片地址,下载到本地 展示. 效果展示 代码清单 MainActivity.java pack ...
- Android 查看App冷启动时间/热启动时间/页面打开时间
Android 查看App冷启动时间/热启动时间/页面打开时间 冷启动时间 热启动时间 页面打开时间 通过adb查看 adb shell am start -W packageName/Activit ...
- android 文本分页显示,Android查看带有列表视图的分页器并动态添加文本
我在一个分片活动中有一个Viewpager,它有一个带有编辑文本和发送按钮的botton框架. 在片段布局中,我有一个ListView,并在片段中附加了一个适配器.现在我正在实现从片段中的Parent ...
- android 电池电量广播,Android查看电池电量的方法(基于BroadcastReceiver)
本文实例讲述了Android查看电池电量的方法.分享给大家供大家参考,具体如下: 程序如下: import android.app.Activity; import android.app.Dialo ...
- Android查看手机平台信息
Android查看手机平台信息(高通或者MTK平台) // 平台信息public static String getHardWare() {//String HARDWARE = getString( ...
- Android查看CPU和GPU使用率(五十五)
Android查看CPU和GPU使用率 1.top -t 能打印出线程级别的CPU使用情况0.打印进程的堆栈信息.从堆栈信息里可以通过.so辨别哪个线程是干什么的,从而在 top -t 的结果里去查找 ...
- Android查看数据库“*.db“内容
Android查看数据库"*.db"内容(包括本地文件.真机.虚拟机的方法) 使用android自带的SQLite,或者第三方的GreenDao等技术操作数据库时,查看内容有以下方 ...
- 查看进程Android大全,Android 查看手机中所有进程
真机测试的时候发现DDMS对进程的显示很不给力,一些进程管理工具又不显示包名. 所以就自己写了一个小程序,查看自己手机中的进程,显示当前时间和进程的包名: 程序运行截图: 布局: xmlns:tool ...
- android查看报错日志,android运行错误日志帮看下 不懂啊
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 xmlns:tools="http://schemas.android.com/tools" android:id="@id ...
最新文章
- 高职扩招计算机应用课程,高职扩招带来的“新生”
- 小功率电子镇流荧光灯相关实验
- c语言注释的开始标记符和结束标记符分别为,C语言程序设计填空题
- CentOS7.0 安装nginx-1.9.10
- EOS经济系统分析[转载]
- CSS之position
- android:碎片的概念
- 电子学会2022年3月份编程等级考试(scratch、pyhton)
- 实验2-3-3 信号处理总结以及Linux下支持的信号列表
- linux时间调整为dst,禁用Linux中的夏令时(DST)更改
- matlab示例程序,Matlab100个实例程序.doc
- 写大数据简历的黄金法则及项目经验
- VS code中文版安装教程(超级详细)
- 如何编译python源代码
- XMPP即时通讯(代码实现)
- AD转换及其相关背景知识
- Newman定制报告
- 防火墙、DCD与TCP Keep alive
- java毕业设计能源控制系统mybatis+源码+调试部署+系统+数据库+lw
- 两化融合资质认证流程
热门文章
- java中jcl_Java日志框架——JCL
- 从头学 Java,复习环境搭建与基础知识,卷起来
- matlab starcat_维纳滤波和编码曝光PSF去除运动模糊【matlab】
- 华为云modelarts平台使用
- JAVA基础(16) Servlet/Filter/Listener/Interceptor区别与联系
- 电路邱关源学习笔记——1.4电路元件
- 差旅费用管理:苦海无边,Concur是岸
- (转)永磁同步电机(PMSM)的FOC闭环控制详解
- 苹果录屏精灵_炸裂!掌握苹果手机的“十八般武艺”,从此让黑科技横行天下!...
- 名校硕博生已经卷到小县城了?浙江山区基层新招岗位95%是硕博,来自上交复旦国科大等...