是否有一种方法来检测一个AVIF图像是否使用JavaScript动画?
绝对没有框架或库。
发布于 2022-11-03 08:25:31
新的API接口可以告诉你这个。
您可以将数据的ReadableStream
传递给它,然后检查解码器的tracks
是否将其animated
元数据设置为true:
if (!window.ImageDecoder) {
console.warn("Your browser doesn't support the ImageDecoder API yet, we'd need to load a library");
}
// from https://colinbendell.github.io/webperf/animated-gif-decode/avif.html
fetch("https://colinbendell.github.io/webperf/animated-gif-decode/6.avif").then((resp) => test("animated", resp.body));
// from https://github.com/link-u/avif-sample-images cc-by-sa 4.0 Kaede Fujisaki
fetch("https://raw.githubusercontent.com/link-u/avif-sample-images/master/fox.profile1.8bpc.yuv444.avif").then((resp) => test("static", resp.body));
document.querySelector("input").onchange = ({target}) => test("your image", target.files[0].stream());
async function test(name, stream) {
const decoder = new ImageDecoder({ data: stream, type: "image/avif" });
// wait for we have some metadata
await decoder.tracks.ready;
// log if one of the tracks is animated
console.log(name, [...decoder.tracks].some((track) => track.animated));
}
<input type=file>
但是,注意这个API仍然不被广泛支持,因为只有基于铬的浏览器有一个实现目前。
https://stackoverflow.com/questions/74298761
复制相似问题