iOS 图片无法正常加载

1.场景

小伙伴们在开发过程中可能也会出现某张图片无法正常展示的问题如下

image.png

2.追踪分析

1)一开始以为是图片太大没有加载下来,但是等了好久也没有出来,打印了图片地址http://*****************.PNG?x-oss-process=image/resize,w_500,h_663/quality,q_90/watermark,image_d2F0ZXJtYXNrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzEwMCx3XzUwMCxoXzY2Mw,g_center,t_90

发现这块的图片地址都是需要先下载下来的,跟后台沟通发现这块h5上传时是上传一个流文件所以获取不到文件地址返回给我们的也就是个下载地址,需要我们先下载再渲染出来,这些SDWebImage都有处理;

2)这个url链接很奇怪,链接中体现文件是png格式,下载下来却又是一个webp格式文件,跟测试同学沟通后反馈是他们强转的图片后缀,h5上传的时候只校验了后缀名没有校验文件真实的类型,开始尝试加载webp文件;

3)首先用SDWebImage尝试加载,没有达到预期效果,后又用YYImage仍然没有加载出图片,最后用Afnetworking下载文件再渲染还是不行,猜测是链接中体现的并非正式的.webp文件后缀;

4)打印错误信息,后台给的二进制文件是webp格式的,但是图片的后缀却是.png

发现网上有人出现过同样的错误,这边处理方法是转换图片类型

3.解决方案

跟后台协商后,后台既然不能给我们无需下载的文件地址,那就在图片处理那块在加水印的时候再加一层format操作,将图片根据上传时候的后缀名再转一次(经测试不影响安卓),保证图片真实类型和链接后缀名统一解决此问题,同时还要提醒上传图片的同事要正规上传图片,最后希望后台上传的时候最好能校验文件真实类型不仅仅通过后缀名校验。

Guess you like

Origin juejin.im/post/7049643281403084836
ios