有没有办法在下载之前区分 APNG 和 PNG 图像?

nju*_*xjy 1 png ios apng

我检查了http header,它们的内容类型都是image/png。我需要根据图像是 PNG 还是 APNG 进行不同的处理,比如如果是 PNG,则直接显示它。如果是 APNG,则显示第一帧,并且仅在用户点击图像时才开始下载整个图像。

Ste*_*tti 5

APNG 的 mime 类型是 image/apng: https: //wiki.mozilla.org/APNG_Specification
如果 HTTP 标头中的内容类型错误,则在不开始下载的情况下无法识别 APNG。
但您可以尝试仅下载前字节/千字节来检查类型,根据规范:“要被识别为 APNG,‘acTL’ 块必须出现在流中任何‘IDAT’ 块之前

  • 很好的答案,但是要找到 IDAT 块,需要的不仅仅是“第一个字节”。例如,gAMA 和 iCCP 块可以轻松跨越数千字节。此外,这需要在加载图像时对块进行实际的“解析”。 (3认同)