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 ...
最新文章
- R语言使用xgboost构建回归模型:vtreat包为xgboost回归模型进行数据预处理(缺失值填充、缺失值标识、离散变量独热onehot编码)、构建出生体重的xgboost模型回归模型
- Nodejs 环境配置终极解决方案
- Entity Framework 4 Poco开发之旅 part 2
- k8s安装sqlite3_kubernetes环境部署单节点redis数据库的方法
- CLR via C# 3 读书笔记(4):第1章 CLR执行模型 — 1.4 执行程序集代码
- OneMap Client API
- 听说当今程序员很厉害?不,那是你不了解上古时期的那些神级操作
- vue 多点触控手势_手写 Vue 手势组件__Vue.js
- mysql lvs+keepalived+mha_MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)
- 小程序下载PDF等类型文件并保存到本地
- 乌班图系统安装谷歌浏览器
- 2022年jsonpath的超详细介绍以及在爬取移动端app上的灵活运用
- python 处理xml
- 平面设计常见的配色方案及色标
- Docker 登录官方仓库
- python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...
- mysql连接flush-hosts问题处理
- liquibase changelog文件
- Python3利用VirusTotal的vt库通过API上传样本
- 使用PYQT5打开电脑摄像头并进行拍照