Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Canvas 使用gif图像并保存_Canvas_Kineticjs - Fatal编程技术网

Canvas 使用gif图像并保存

Canvas 使用gif图像并保存,canvas,kineticjs,Canvas,Kineticjs,我尝试将gif图像添加到画布中,添加后,gif是静态的,但当我更改某些其他对象属性时,即dynamic.Text;s setY属性,gif图像移动到动画的另一个步骤 请问,如何将gif图像添加到图层中,然后使用 stage.toDataURL({ callback: function(dataUrl) { //callback }) }); 是否保存为gif图像?或者是否存在任何不同的机制来实现此效果?如果要将第一幅图像保存在动画.gif中,可以将其绘制到屏幕外

我尝试将gif图像添加到画布中,添加后,gif是静态的,但当我更改某些其他对象属性时,即dynamic.Text;s setY属性,gif图像移动到动画的另一个步骤

请问,如何将gif图像添加到图层中,然后使用

stage.toDataURL({
    callback: function(dataUrl) {
        //callback
    })
});

是否保存为gif图像?或者是否存在任何不同的机制来实现此效果?

如果要将第一幅图像保存在动画.gif中,可以将其绘制到屏幕外的画布上,然后使用context.getDataURL获取第一幅图像的dataUrl:

示例代码和演示:


这个解决方案看起来不错,但我的项目是由KineticJS实现的,我通过添加到层-var layer=new Kinetic.layer;来添加图像、文本等对象;。最奇怪的是,每当我更改任何对象的任何属性时,移动文本,更改文本。。。gif的动画将改变一步。即使您的项目是在KineticJS中实现的,您也可以始终使用常规html画布元素捕获动画中第一幅图像的dataURL。gif使用其他资源解决问题并不违法!。是的,KineticJS的行为很奇怪,尽管KineticJS不支持动画.gifs,所以我不太确定我会期望什么。干杯-是的,使用其他方法向画布添加元素是最好的解决方案。我想,用画布将gif保存为动画是不可能的。我说的对吗?哦…你是说把.gif文件作为一系列图像播放?当然,那是可以做到的!shachaf编写了一个.gif解析器,您可以使用它来获取动画gif中的每个图像:感谢您链接此库。这对我很有用:谢谢
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
    body{ background-color: ivory; }
    canvas{border:1px solid red;}
</style>
<script>
$(function(){

    var canvas=document.getElementById("canvas");
    var ctx=canvas.getContext("2d");

    var img=new Image();
    img.crossOrigin="anonymous";
    img.onload=start;
    img.src="https://dl.dropboxusercontent.com/u/139992952/multple/animated.gif";
    function start(){
        ctx.drawImage(img,0,0);
        var url=canvas.toDataURL();
    }

}); // end $(function(){});
</script>
</head>
<body>
    <h4>The animated .gif in an img element</h4>
    <img src="https://dl.dropboxusercontent.com/u/139992952/multple/animated.gif"><br>
    <h4>The animated .gif drawn in a canvas element</h4>
    <canvas id="canvas" width=300 height=300></canvas>
</body>
</html>