iOS图片上传至后台被自动旋转90°的解决方案

        在iOS移动端开发项目中,遇到过这样一个问题,在iOS这边上传的本地图片,再下载至iOS本地预览的图片无异样,可上传至后台,后台得到的图片却被旋转,同时由后台返回的图片url地址在不同的浏览器上预览查看该图片,发现不同浏览器也有可能被翻转,而在iOS渲染中仍未发现问题,如:iOS本地选择的相册图片或者拍摄的图片是一张横图,可上传至服务器后台后变成了竖图,该图片在后台的图片信息展示刚好被旋转了90°。

       针对以上问题,归根结底主要是由于图片本身自带的悬角信息被忽略,在iOS开发中,图片EXIF信息的这个参数和Orientation有关,相机拍摄出来的照片或者从本地相册选择的图片均含有EXIF信息,UIImage的imageOrientation属性指的就是EXIF中的orientation信息。

        如果我们忽略orientation信息,而直接对照片进行像素处理或者drawInRect等操作,得到的结果就是翻转或者旋转90之后的样子。这是因为我们执行像素处理或者drawInRect等操作之后,imageOrientaion信息被删除了,imageOrientaion被重设,造成照片内容和imageOrientaion不匹配,通过debug我们发现,iOS手机上的竖图的imageOrientaion为UIImageOrientationRight,横图的imageOrientaion为UIImageOrientationUp。所以,在对照片进行处理之前,先将图片旋转到正确的方向,并且返回的imageOrientaion为0。

       针对以上问题写了一个针对UIImage的Category,这个分类是根据图片的imageOrientation属性,对image进行旋转:

fixOrientation旋转方法

具体方法实现如下:

在实际例子中,我们只需要将需要上传的原始图像在处理上传之前进行旋转,重设为UIImageOrientationUp:

        经过实例验证,从iOS上传的图片信息,经过上传前的悬角处理以后,上传至服务器后台,后台所得到的图片宽高信息和上传的图片宽高信息一致,并未旋转90°。以上解决方案仅是开发过程中遇到的bug解放方案,特此作为随笔记录,希望对遇到同样问题的开发者们有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容