Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从动画GIF提取单个帧到画布_Javascript_Html_Canvas_Animated Gif - Fatal编程技术网

Javascript 从动画GIF提取单个帧到画布

Javascript 从动画GIF提取单个帧到画布,javascript,html,canvas,animated-gif,Javascript,Html,Canvas,Animated Gif,我需要将动画GIF的所有帧加载到HTML5画布 请注意,我不想“播放”动画(之前有人问过这个问题),我只想提取所有帧以将其用作单个图像。对不起,简短的回答是JavaScript无法控制动画GIF的当前帧 很长一段时间的答案是,有很多方法可以用JS做你想做的事情,但它们都是非常复杂的黑客 黑客方式的例子:创建画布,不要将其添加到DOM中(这样任何人都不会看到)。在快速循环(setTimeout)中,不断绘制此画布并收集快照。比较画布ImageData以查看帧是否已更改 也许,最好利用您的时间,看看

我需要将动画GIF的所有帧加载到HTML5画布


请注意,我不想“播放”动画(之前有人问过这个问题),我只想提取所有帧以将其用作单个图像。

对不起,简短的回答是JavaScript无法控制动画GIF的当前帧

很长一段时间的答案是,有很多方法可以用JS做你想做的事情,但它们都是非常复杂的黑客

黑客方式的例子:创建画布,不要将其添加到DOM中(这样任何人都不会看到)。在快速循环(setTimeout)中,不断绘制此画布并收集快照。比较画布ImageData以查看帧是否已更改


也许,最好利用您的时间,看看如何让服务器为您拆分(使用php/perl/python/etc)

看看;它下载GIF,对其进行解析,并将文件的各个帧绘制为
。通过一点挖掘,您应该能够找到绘制单个框架的代码,并从中进行工作。

Buzzfeed已经从发布的repo tommitytom中对代码进行了库化。我还没试过,但看起来不错


请你再具体一点,好吗。使用javascript+canvas,我希望加载一个“anim gif”文件(由许多帧组成),然后我希望将每个提取的帧作为单个图像使用。这种黑客方式很聪明,但不可预测。我同意如果没有更好的JS解决方案出现,我将不得不求助于服务器端脚本。。。谢谢,这不可能<代码>当CanvasImageSource对象表示HTMLImageElement中的动画图像时,用户代理必须使用动画的默认图像(该格式定义的图像将在动画不受支持或禁用时使用),或者,如果没有此类图像,动画的第一帧此响应当时可能是正确的。但是今天使用libgif js可以完成这项工作,而且非常简单。这不是真的,请查看以下示例:libgif js的
move_to()
函数