暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

遇见public.heic/f 媒体文件

轻易科技技术中心 2019-05-31
485

背景:最近在海马项目中遇到一个这样的问题,iOS 手机上传图片,发现我上传到后台的照片在后台不回显示,为什么呢?明明图片数据已经上产到后台并且有成功的数据返回,难道是假的?而且有的图片是可以的,有的是不可以的

  1. 遇到这样的问题,如何处理呢?

            首先自己用自己的手机经过多次复测没有复现该问题,猜测可能是测试同学手机问题,然后找到测试同学复现该问题,从测试同学那里了解到说是有的可以有的不可以,从应用内部拍照是可以的,选择的照片从应用外拍摄的有时选择的不可以,神奇了,经过复测,确实是有问题(这个地儿应该给我们的测试同学一个赞),这个可以选择的照片是他自己拍摄的,查看了测试同学的测试机和要了不能上传的图片,自己复现问题查找原因

  2. 处理问题的过程 

  3.         断点调试,发现该图片的类型是:public.heic 将iPhone 更新到新版的iOS 11,可能会发现拍照时会自动存档成文件名为.heic 或.heif 的文件】,果然查看测试同学的手机,系统 11. ~这个问题很明显是数据不兼容造成的,希望后台兼容下该格式的图像,经过与后台沟通,后台是限制格式了,而且后台同学接口测试数据的媒体类型是有拦截的,但是App 上传的时数据时,是没有被拦截,Why?问题定位了,又出现新的问题。

  4. 解决问题

            通过检查代码,接口的上传媒体类型App 强制转换成了(png)那接口肯定是拦不下了,继续追查代码,发现根本原因是选择照片的回传没有处理,这个地方是需要做兼容处理的,怎么处理?经过调查代码逻辑,回传显示的图片,App 只对gif 做了特殊处理,没有兼容该模式,上手处理,抓数据,图片从底层返回的类型是:public.heic ,根据返回的媒体类型,将图片格式进行转换png图像

代码如下:

 

补充:为什么苹果要出一个新的图片格式?

        高效率图片格式(High Efficiency Image File Format, HEIF)是一种新的文件格式(影片则为HEVC 高效率视讯编码),除了保留较多较完整的画面细节之外档案还更小一些,能减轻照片太占储存空间的问题,避免手机很快被塞爆。

        此外HEIF 文件能同时存放多张图像及其缩图并支持连拍相片、同时储存静态照片与动态影片(录影时拍照)、支援焦点堆叠和曝光堆叠并能整合其他文字或音讯资料在同一个档案中且能同时播放。

       使用HEIF 格式其实是有很多好处的,不过并不是每个人的手机或电脑都能支持这类文件,如果你常常需要跟其他人分享你拍的照片又不希望造成其他人的困扰,可依本文的方法将iPhone 预设的拍照格式改回相容性较高、全部人都能直接开的JPEG 格式。

总结:整体来说,问题发现的过程,相对来说不是很顺利,只知道苹果系统更新,也知道更新内容,但是没考虑到用户在什么场景下使用海马项目中上传照片功能,不过解决问题相对顺利。

文章转载自轻易科技技术中心,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论