从空白画布开始:
<canvas id='myCanvas' width='800' height='600'></canvas>
然后初始化该画布:
function init_canvas(){
var canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
context.lineCap = 'round';
// fill it with white background
context.save();
context.fillStyle = '#fff';
context.fillRect(0, 0, context.canvas.width, context.canvas.height);
context.restore();
return;
}
然后在画布上画一堆。
然后尝试在后端使用 ajax 和 PHP 将其保存到服务器。
在客户端:
var img = canvas.toDataURL('image/png');
// strip the leading garbage.
img.substr(img.indexOf(',')+1).toString();
将生成的字符串(base64 编码的 png)直接发送到 PHP 和 base64_decode() 字符串...图像始终是正确的大小,但上面没有任何绘图 - 只是一个透明图像。这似乎不是 PHP 中的 base64_decode() 的问题,它似乎是一个安全问题。它在 Firefox 4 和最新的 Chrome 中都失败了。
将生成的 png 图像转储到带有“image/png”标头的 firefox 会在错误控制台中产生:
Error: Image corrupt or truncated: http://somewhere.com/showimage.php
Source file: http://somewhere.com/showimage.php
但是......图像没有损坏或被截断,除非 toDataURL() 到处都被破坏,因为 php 的东西只是 base64_decode() toDataURL() 的结果。
有任何想法吗?
谢谢!