使用gifshot从base64字符串数组创建gifs在Firefox中不起作用

时间:2015-04-20 18:34:16

标签: javascript jquery

我正在尝试使用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。

1 个答案:

答案 0 :(得分:2)

我正在使用gifshot,我发现我需要单独初始化Image对象并将其添加到数组中。下面的代码更清晰:

var images = [];
var oneImage = new Image();
oneImage.src = base64ImageString;
images.push(oneImage);

然后使用您的代码导出gif图像。 希望这篇文章可以帮助你:)