iOS - 七牛/Ucloud 返回webp格式图片无法加载

最近公司打算把服务器返回的jpg格式的图片链接全部转化成webp格式的。由于SDWebImage本身支持webp加载的解析,所以转成webp对项目来说并不费时。但是后来服务器改了之后,页面上的图片死活显示不出来。以为是SD更改了解析方法,上网各种查资料,真是国内外翻遍,然而,并没有。。。。

把SDWebImage单独拖出来,搞出来测试。这次从网上找了一个webp格式的图片链接,顺便拿了一个后台返回的图片链接

  //UCloud  返回的webp格式图片链接
  NSString *ucloudWebpUrlStr  = @"https://**************.jpg?iopcmd=thumbnail&type=1&scale=50|iopcmd=convert&dst=webp&q=50";
   //网上真实的webp格式图片链接
    NSString *webpUrlstr    = @"https://github.com/samdutton/simpl/blob/master/picturetype/kittens.webp?raw=true";
  • 显示结果如图显示

    webp错误展示

好吧,看来是格式的原因,初始我是怀疑Ucloud的返回webp格式是错误的。但是呢,如果是错误的他们应该早发现了。好吧,说事实:
七牛或者Ucloud返回的链接中包含有特殊符号:管道符“ | ”,这导致在转化成url的时候出错。需要对特殊符号转码一下:

    NSString *encodeStr = [ucloudWebpUrlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  • 结果正确显示

编码后显示

这样,就能很顺畅的显示出来了。但是每个用sd_setimage的时候可能都要编码一下,这是不爽的。后来打算让后台统一替换掉图片链接中的管道符号“ | ”,替换规则是:

将链接中的 “ | ” 替换成 “ %7C ” 。前端只需要让SDWebImage支持webp即可,代码不需要添加一行,结束。

OVER

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值