如何将使用ImageService提供的图像的canvas元素作为可下载图像的背景?

时间:2013-01-25 05:48:28

标签: javascript html5 google-app-engine google-chrome

我正在编写一个应用程序,用户可以上传图像,在其上绘图并保存结果。我试图通过使用canvas元素并使用上传的图像作为其背景来实现此目的。我正在通过ImageService检索图像。以下是初始化画布的客户端代码:

var image = new Image();
image.src = "http://some.google.domain.com/foobar123";
var ctx = canvas.getContext('2d')
image.onload = function() {
    ctx.drawImage(image, 0, 0);
};

现在用户可以在图像上绘制内容。

然后当用户想要保存图像时,我打电话给:

canvas.toDataURL("image/png")

这会在Chrome中出现此错误:

Error: SecurityError: DOM Exception 18.
"Error: An attempt was made to break through the security policy of the user agent."

我认为Chrome不喜欢它,因为图片是从某个谷歌域提供的,这与我的应用引擎应用的域名不同。

有解决方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

作为一种解决方法,我现在使用BlobstoreService来提供图像数据而不是ImageService。此方法提供与我的应用相同的域中的图片,但您将失去使用Google静态图片服务基础架构的所有好处。