|
前言
-
图片的宽度和高度是处理图片的必要信息
-
但是,某些场景下获取的信息“不对”
获取的图片的宽度和高度和实际编辑图片的宽高比“不对”
获取图片宽高的途径
-
从JPEG文件的EXIF信息中可以获取宽高
-
API方式获取图片宽高
-
支持库位图获取图片宽高
理论上,只要姿势对,获取的图片宽高就不会错
实际上,获取的宽高没错,但是编辑图片的时候,原本16:9的照片却以9:16显示
解析原因
-
-
EXIF中图片旋转标志.
-
在拍摄照片时,不可避免的会旋转相机、手机从不同的角度牌照。因此,EXIF中保存了图片的旋转信息。
-
Oritention Flag的取值范围是1-8,实际上对于照片,只会出现1、3、6和8四个值。 各值的意义如下:
EXIF Orientation |
翻转方式 |
1 |
未翻转 |
2* |
左右翻转 |
3 |
180度旋转 |
4* |
上下翻转 |
5* |
左旋转90度后上下翻转 |
6 |
右旋转90度 |
7* |
右旋转90度后上下翻转 |
8 |
左旋转90度 |
- 注意:带“*”号的基本不会出现,因为用相机拍摄照片时,没法做“镜像翻转”这样的操作。
-
系统的浏览图片会根据旋转标志自动回正图片以便查看,正常查看图片信息与浏览图片均符合常理(所见即所得)
-
实际编辑图片的时候会忽略旋转标志,导致编辑状态下的图片会以旋转标志标示的一样旋转后显示,这就和浏览看见的图片的宽高比不符。16:9的图片以9:16显示在编辑状态下
解决方案
-
解析图片EXIF信息,获取旋转标志,根据旋转标志旋转图片后再进行编辑
注意事项
-
本篇分享的问题解析均基于JPEG文件格式。
-
下载一张未经修改的相机直出带旋转标志的jpeg文件,用美图秀秀编辑的时候就一目了然复现本文的异常。
|
|