当我在完成加载整个gif之前将gif图像绘制到canvas元素时,它只是一个白色区域。但是如果我做的话
window.stop()
在它完成之前,它会在元素中绘制gif。 问题是停止整个页面会停止所有的GIF而不是我想要复制到画布的特定GIF。 如何在完成加载整个gif之前,将gif中当前加载的内容绘制到canvas元素中。 我想的可能是将它放在iframe中并停止iframe或其他类似的技巧,但我也想要一些你们提供的想法或解决方案。
编辑:有没有办法检测使用javascript以百分比下载了多少gif?这样我才能知道至少下载了第一帧?
答案 0 :(得分:3)
如何在完成加载整个gif之前将gif中当前加载的内容绘制到canvas元素
你不能。
这本身并不是一个错误。规范要求:
如果image参数是一个不完全可解码的HTMLImageElement对象......那么实现必须返回而不绘制任何东西。
当您执行stop()
图像时,它的工作原理在技术上被宣布为完全可用。或者更准确地用简单的英语,“尽可能得到它。”
假设您需要此功能,最好的选择是从gif的帧中制作许多小图像,并在加载时使用它们。任何其他解决方案(例如在运行中打破gif)都需要先装载整个gif,这似乎是你认为不可接受的。