我正在尝试使用gifshot库从画布创建gif。我正在使用canvas.toDataURL()
捕获画布,将这些结果存储在数组中,然后将数组传递给gifshot函数。这在Chrome和IE中运行得非常好,但在FF中,gif永远不会被创建。我可以看到Firefox在DOM中创建了每个“帧”的临时图像,但由于某种原因,图像加载的onerror
部分被命中而不是实际的onload
。我不确定为什么。
我真的不确定要尝试什么。这是一种直截了当的方法:只需将图像数组传递给gifshot函数。
function createGif(array) {
gifshot.createGIF({
images: array
}, function (obj) {
if (!obj.error) {
var image = obj.image,
animatedImage = document.createElement('img');
animatedImage.src = image;
document.body.appendChild(animatedImage);
}
});
}
其中array
是base64字符串。传递类似imgur链接的东西(就像在他们的例子中)工作得很好。它只是FF不喜欢的base64字符串数组。我在FF中检查过,正在传递的数组很好。
以下是一个jsfiddle:http://jsfiddle.net/dxdn6s3h/2/。适用于IE / Chrome,不适用于FF。
答案 0 :(得分:2)
我正在使用gifshot,我发现我需要单独初始化Image对象并将其添加到数组中。下面的代码更清晰:
var images = [];
var oneImage = new Image();
oneImage.src = base64ImageString;
images.push(oneImage);
然后使用您的代码导出gif图像。 希望这篇文章可以帮助你:)