我正在尝试用我的画布创建一个图像,但是经过一些尝试后我似乎无法在后端获得有效的上传PNG。有人可以看看这里发生了什么吗?
我的javascript:
stage.toDataURL({
callback: function(dataUrl) {
var imgURL = dataUrl; // keep the entire url
$.ajax({
type: "POST",
url: "http://www.xxxx.nl/pointer/upload.php",
data: ({imgData : imgURL}),
cache: false,
success: function(result){
//window.open(dataUrl); // Show result stage in a new window
alert(result); // show php error if exists
}
});
}
});
我现在非常基本的.php:
$im = imagecreatefrompng($_POST['imgData']);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
我的错误日志:
[Fri Mar 08 11:29:16 2013] [error] [client 24.132.214.139] mod_security: Access denied with code 500. Error reading request body, error code 70007: The timeout specified has expired [hostname "www.ccc.nl"] [uri "/pointer/upload.php"]
答案 0 :(得分:1)
执行此操作时:
var canvasData = myCanvas.toDataURL("image/png");
你得到代表.png的base64编码字符串,如下所示:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAGB………
请注意,此字符串以此标头为前缀:data:image / png; base64。这个标题是.png文件不需要/不识别的 - 并且会使imagecreatefrompng()犯规。因此,在保存此字符串以创建.png时,必须剥离标题。在php方面你可以这样做(虽然你可以在客户端剥离它):
$justPngData=substr($imageData, strpos($imageData, ",")+1);
然后继续正常......