使用 Discord 贴纸时遇到问题

Having trouble working with Discord Stickers

我正在尝试使用 Discord 贴纸,但我越深入,它就越令人困惑。

我们将要使用的贴纸 URL:https://cdn.discordapp.com/stickers/781291131828699156.png

如果您在 discord 上复制并粘贴 URL,它只会显示非动画(“PNG”)版本的贴纸。但是,当您通常使用贴纸选项卡或欢迎反应方法在 Discord 上发送相同的贴纸时,Discord 会将其显示为实际贴纸(动画,“GIF”)。我在工作中发现的东西很少:

我尝试使用 axios 下载文件,但它是相同的(“PNG”版本)。

Discord 使用 APNG 格式,本质上只是让 PNG 文件动画,用于渲染贴纸,所以 .png 不是问题。

至于加载不出来的原因有很多。

  1. 您的浏览器可能不支持该格式。但是,正如您在问题中所说,您可以将其加载到单独的 window.
  2. 中,这被排除在外
  3. 可能是 mediacdn 服务器在压缩文件时弄乱了 APNG 数据。

如您所知,Discord 使用 media.discordapp.net 作为加载图像的媒体代理,因此这可能是错误的。存在关于从该域加载的视频无法在 Discord 中加载的已知问题,因此这可能是相关的。

我自己测试过,它看起来像 a) 如果您在浏览器中加载 media link,它 不会 动画化(至少对我而言),并且 b) 如果您在 Discord 中发送它,它也 不会 动画化。

然而,cdn link 略有不同。我发现 a) 它 确实 ,实际上,在我的浏览器上动画(就像你的浏览器发生的那样)但是 b) 在 Discord 中动画.

所以我们知道 media 上发生的事情与 cdn 上发生的事情不同。也许这就是原因?

我目前的理论是,Discord 可能会从 PNG 文件(认为它不是 APNG)中删除不需要的(在它看来)数据以减少带宽使用,从而阻止它动画化。

不过,我必须进一步调查。