iOS拍照方向问题,自己很长一段时间也不清楚,现在整理一下。
三个问题:
1. iPhone拍照时那个方向是正(UIImageOrientationUp) ?
2. 为什么UIImageView方向显示正确,上传到服务器后却不正确 ?
3. 如何调整方向?
第一个问题:iPhone拍照究竟那个是正方向?
(正方向)UIImageOrientationUp
而我们平常拍照的方向则是 (UIImageOrientationRight)
有没有很吃惊!
第二个问题: 为什么UIImageView方向显示正确?
拍照时,相机会将此时手机的orientation属性存储到UIImage的imageOrientation中。
UIImageView很聪明,在显示时它会根据UIImage对象的imageOrientation属性调整最终显示的方向。所以不管我们拍照时那个方向,它显示的都正常。
但实际上UIImage的图像数据却是按照物理相机的角度存储。So~
第三个问题:如何调整方向?
@interface UIImage (Utility) - (UIImage *)orientationCorrectedImage; @end @implementation UIImage (Utility) - (UIImage *)orientationCorrectedImage { UIImage * resultImage = nil; resultImage = self; UIImageOrientation imageOrientation = self.imageOrientation; if(imageOrientation != UIImageOrientationUp){ UIGraphicsBeginImageContext(self.size); [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } return resultImage; } @end
示例代码(了解更多):https://github.com/github-xiaogang/CameraDemo/
时间: 2024-09-30 20:40:09