【问题标题】:Upload canvas element to webserver/database?将画布元素上传到网络服务器/数据库?
【发布时间】:2010-08-28 19:44:25
【问题描述】:
我正在寻找一种将画布元素从 Firefox 上传到网络服务器或数据库的好方法,以便以后能够重新加载。
我的想法:
1. 我的第一个想法是使用 getImageData() 并将画布作为 ImageData 对象保存到数据库中,但这可能不是一个好的解决方案,因为这些对象可能会变得非常大。
2.第二个想法是使用Flash/Javascript方法将画布作为PNG上传到网络服务器。
您有关于这些方法的任何 cmet 或者可能有其他好的解决方案吗?
【问题讨论】:
标签:
javascript
html
canvas
【解决方案1】:
Canvas 元素有一个toDataURL 函数,它将画布上的图像序列化为PNG,编码为data URL。您可以使用表单(通过将隐藏的输入元素的值设置为数据 URL)或使用 AJAX 在后台发布图像。
您应该知道toDataURL(或任何其他获取像素数据的方法)如果画布不是“origin-clean”,则会引发安全异常。例如,如果您曾经使用来自不同域的图像调用 drawImage,则不能再使用 toDataURL 或 getImageData 函数。
【解决方案2】:
我不太确定我是否会担心大小,除非图像的大小通常 > 10 mb。这真的是个问题吗?
如果没有,使用getImageData() 将是 IMO 最实用、最简单的方法。