将动画GIF的第一帧绘制到HTML5画布

时间:2011-12-13 19:58:26

标签: javascript jquery html5 canvas

当我在完成加载整个gif之前将gif图像绘制到canvas元素时,它只是一个白色区域。但是如果我做的话

window.stop()

在它完成之前,它会在元素中绘制gif。 问题是停止整个页面会停止所有的GIF而不是我想要复制到画布的特定GIF。 如何在完成加载整个gif之前,将gif中当前加载的内容绘制到canvas元素中。 我想的可能是将它放在iframe中并停止iframe或其他类似的技巧,但我也想要一些你们提供的想法或解决方案。

编辑:有没有办法检测使用javascript以百分比下载了多少gif?这样我才能知道至少下载了第一帧?

1 个答案:

答案 0 :(得分:3)

  

如何在完成加载整个gif之前将gif中当前加载的内容绘制到canvas元素

你不能。

这本身并不是一个错误。规范要求:

  

如果image参数是一个不完全可解码的HTMLImageElement对象......那么实现必须返回而不绘制任何东西。

当您执行stop()图像时,它的工作原理在技术上被宣布为完全可用。或者更准确地用简单的英语,“尽可能得到它。”

假设您需要此功能,最好的选择是从gif的帧中制作许多小图像,并在加载时使用它们。任何其他解决方案(例如在运行中打破gif)都需要先装载整个gif,这似乎是你认为不可接受的。