美文网首页大前端开发
iOS图片上传至后台被自动旋转90°的解决方案

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

作者: 断点凌er_ZL | 来源:发表于2019-07-11 13:50 被阅读1次

            在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解放方案,特此作为随笔记录,希望对遇到同样问题的开发者们有所帮助。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/tixrkctx.html