我有一个HTML5画布。我.toDataURI它,并使用AJAX将其发送到PHP。 PHP将其存储在数据库中。
然后,我在另一个页面上包含一个img元素,以从数据库中请求该数据并进行渲染。但是...不会。数据通过,我可以通过浏览器的视图源函数看到它:
<img id="embedded" src="data:image/png;base64,iVBORw...5CYII=" />
(添加省略号)
它不是被截断或类似的愚蠢,在每个脚本中都有document.write和echo,从画布生成数据的位置到嵌入最终元素的位置,它都完整无缺。
我已经尝试过使用其他来源生成的图像URI,这没有问题。我已经在Chrome 12和Firefox 5中对此进行了测试,两者的行为均相同。
最后一个奇怪的是,当画布完全空白时,将显示它生成的图像数据:我得到的空白图像的尺寸与原始画布的尺寸相同。但是,一旦我在上面画上任何东西,一无所有。只是熟悉的小错误加载图像图标。
这是我的接收端代码:
http://pastebin.com/Hw1ykd1i
对于发送端:
http://pastebin.com/hwsEfsaD
最佳答案
如果我完全了解您的问题-您是说接收器无法正常工作(即反映输出的东西)。
您需要对数据进行编码:
function postToServer(data) {
data = "data=" + encodeURIComponent(data);
// continue with XHR POST
这适用于空白画布,因为它由没有任何符号的字母组成。绘制后,canvas base64值中就包含诸如
+
的字符,在POST
语言中,空格表示空格。因此,如果您encodeURIComponent
您的值,这些符号将原封不动地发送到您的服务器,并且接收者thingy应该能够正确呈现输出。