通过PHP保存png时获取暗图像

通过PHP保存png时获取暗图像,php,html,html5-canvas,Php,Html,Html5 Canvas,我正试图用手机保存从HTML5/Canvas捕获的图像。我正在使用PHP(symfony2)。 我按照这篇文章()中的说明进行了操作,但是我保存了一个黑色的空图像,而不是我捕获的图像 以下是我的JavaScript帖子代码: var dataUrl = canvas.toDataURL(); $.ajax({ type: "POST", url: "{{ path("personne_photo_capture",{"id":entity.personne.id}) }}",

我正试图用手机保存从HTML5/Canvas捕获的图像。我正在使用PHP(symfony2)。 我按照这篇文章()中的说明进行了操作,但是我保存了一个黑色的空图像,而不是我捕获的图像

以下是我的JavaScript帖子代码:

var dataUrl = canvas.toDataURL();
$.ajax({
    type: "POST",
    url: "{{ path("personne_photo_capture",{"id":entity.personne.id}) }}",
    data: {
        imgBase64: dataUrl
    }
}).done(function (msg) {
    $('#msg').html(msg); 

}).fail(function (xhr, textStatus, errorThrown) {
    $('#msg').html(xhr.responseText);
}); 
以及PHP保存代码:

$rawData = $_POST['imgBase64'];
if (isset($rawData)) {
    $filteredData = explode('base64,', $rawData);
    $data = base64_decode($filteredData[1]);  
    $filename = "profil.png";
     file_put_contents('picts/small/' . $filename, $data);
}

首先,确保将客户端的数据类型指定为

 dataType: 'text',
在服务器端,将前两条语句替换为:

$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));
对于进一步的指示,在前面提出的问题上进行循环


如果执行var dataUrl=canvas.toDataURL(),可能会发生什么;var img=document.createElement(“img”);src=dataUrl;文件.正文.附件(img);哇,我也有同样的问题,Chrome48中的base64是无用的(无效的png格式),但是Firefox43中的base64工作正常。。。在firefox中尝试你的代码,它能工作吗?explode代码在我看来很好,我怀疑preg_replace会做得更好