由GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}引起的刨根问底

最近写个demo使用Glide加载图片突然发现图片未加载出来,主要报错:

GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}

这时感到很奇怪检查下自己的代码,发现图片的url有问题,,,,,

        Glide
        .with(this)
        .load("https://github.com/sunnnydaydev/DataBingding/blob/main/photo/glide_test.png")
        .into(binding.img)

这个图片是自己github项目上放的一张图片,可能是受Github#ReadMe的影响,自己平时在Github#ReadMe中插入图片时直接把项目中图片链接以富文本语法插入即可展示图片。因此使用Glide加载这张图片时自己直接就使用了这个链接。

说了半天说说为啥报错吧 😄😄😄😄 其实图片url有问题,这个url在服务器上代表的是一个页面资源,而不是一张具体图片资源。

上面的链接复制到浏览器打开你会发现页面是这样的:

在这里插入图片描述
所以Glide拿到这个url http请求后拿到的是整个网页数据。为了能够正确的加载图片,直接指定正确的图片路径即可。

这时便有一个问题了,既然Github#ReadMe中指定了上述的url,为啥他能够正确加载这张图片???

我想应该是网站在解析ReadMe富文本文件时解析到这个url会自动转到图片的真正服务器地址。嗯嗯背后的流程大致应该就是这样。

那么此时我又有个想法,既然图片有真正的服务器地址,我可以找出来吗?这样我以后或许可以专门建个github项目放置图片,然后客户端需要请求在线图片时我就可以在这直接模拟了😄😄😄😄

通过如下方式被找到了,,,,Github#ReadMe页面:
在这里插入图片描述

在这里插入图片描述
发现复制图片url粘贴到浏览器后多了一个查询参数?raw = true,然后enter 后神奇出现了

在这里插入图片描述
浏览器自动转到了图片所在服务器的url,这个url有规律的:

https://raw.githubusercontent.com/你的Github用户名/Github上你项目中的图片

经过一番探究颇有收获,不过还是有些需要注意的:

  • github在国内不稳定老是出现打开超时现象
  • raw.githubusercontent.com 这个域名下的资源目前国内好像访问不了,一直请求拒绝。

上述很好解决,程序员吗搞个梯子即可😄😄😄😄

The end 探究完毕,溜溜球,,,,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值