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

时间:2016-02-08 10:12:54

标签: php html5 html5-canvas

我正在尝试使用移动设备从HTML5 / Canvas保存捕获的图像。我正在使用PHP(symfony2)。 我按照这篇文章(How to save a PNG image server-side, from a base64 data source)的说明进行操作,但是我得到了一张黑暗的空图像而不是我拍摄的图像。

这是我的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);
}

1 个答案:

答案 0 :(得分:0)

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

 dataType: 'text',

在服务器端,将前两个语句替换为:

$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));

如需进一步指示,请先前问一下问题

How to save a PNG image server-side, from a base64 data string