【发布时间】:2015-01-03 04:51:36
【问题描述】:
我正在使用glfx.js 编辑我的图像,但是当我尝试使用toDataURL() 函数获取该图像的数据时,我得到一个空白图像(宽度与原始图像相同)。
奇怪的是,在 Chrome 中脚本运行完美。
我要提的是,图像是使用 onload 事件在canvas 中加载的:
img.onload = function(){
try {
canvas = fx.canvas();
} catch (e) {
alert(e);
return;
}
// convert the image to a texture
texture = canvas.texture(img);
// draw and update canvas
canvas.draw(texture).update();
// replace the image with the canvas
img.parentNode.insertBefore(canvas, img);
img.parentNode.removeChild(img);
}
我的图片路径也在同一个域上;
问题(在 Firefox 中)是当我点击保存按钮时。 Chrome 会返回预期的结果,但 Firefox 会返回:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7YAAAIWCAYAAABjkRHCAAAHxklEQVR4nO3BMQEAAADCoPVPbQZ/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
... [ lots of A s ] ...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAzwD6aAABkwvPRgAAAABJRU5ErkJggg==
什么可能导致这个结果,我该如何解决?
【问题讨论】:
-
您正在编辑的图像是否在同一个域中?只是为了排除明显的。
-
是的。我将编辑我的帖子以提及这一点! Firefox(而不是 chrome)中的图像不在同一个域中存在问题?
-
似乎是某处发生的异步操作。如果调用 toDataURL() 时未加载图像,则画布将为空白。
-
图像已加载到画布上,我可以查看和编辑它。问题是 toDataURL 没有从画布中获取正确的信息。
-
作为额外的检查,如果画布的宽度或高度为 0,根据文档,
getDataURL()返回"data:,"。在(错误地)将画布的大小设置为 0 之后,我得到了这个。
标签: javascript firefox canvas webgl todataurl