作者 | Seacen,目前在校生一枚,热衷于iOS开发,正在不断学习与探索当中。在平时喜欢运动、阅读、分享生活。
刚开始使用AVFoundation进行采集的时候,经常会发现采集回来的图片方向不对。一般我们都是垂直(HOME键在底部)操作手机,但是在手机用相册或者在电脑上点开采集的图片时,都会发现图片逆时针旋转了90度。为了发现问题的所在,我们需要了解一下通常在图片采集中我们会遇到的各种方向。
图片方向 UIImageOrientation
日常开发中,UIImage是一个使用频率很高的类,但是一般我们并不太在意他的方向问题。我们可以通过imageOrientation属性获取UIImage的图片方向,即UIImageOrientation。该方向总共有八种情况,用于表示当前图片的方向状态:
UIImageOrientationUp: 方向正确
UIImageOrientationDown: 旋转180度
UIImageOrientationLeft: 逆时针旋转90度
UIImageOrientationRight: 顺时针旋转90度
UIImageOrientationUpMirrored: 水平镜像
UIImageOrientationDownMirrored: 旋转180度 + 水平镜像
UIImageOrientationLeftMirrored: 逆时针旋转90度 + 垂直镜像
UIImageOrientationRightMirrored: 顺时针旋转90度 + 垂直镜像
在平时我们并没有发现UIImage的显示方向有问题,是因为它在显示的时候会根据当前图片的imageOrientation属性,进行相应的转换,即逆操作。如果值是UIImageOrientationLeft则表示图片在显示的时候,需要顺时针旋转90度。
简单来说,UIImageOrientation就是告诉我们该图像的方向属于什么状态,在显示时候是需要做一个逆操作来让图像真正变成我们想要的方向。
回到文章一开始的问题,图片逆时针旋转了90度是因为当前的图像的像素点数据是真的逆时针旋转了90度。虽然整个图片中是有图片方向这个属性的,但是在用文件显示图片的过程中,系统并不会根据该属性进行逆操作,而是耿直的直接显示了。