尝试从fabric.js推送到php时图像损坏

时间:2014-05-17 12:35:14

标签: javascript php html5-canvas fabricjs

我有一个使用fabric.js构建的绘图应用程序,并且需要保存图像服务器端。执行此操作的代码非常简单,我有一个表单,我使用以下javascript推送画布图像:

jQuery(".send").click(function(){
canvas.deactivateAll();
if (!fabric.Canvas.supports('toDataURL')) {
  alert('This browser doesn\'t provide means to serialize canvas to an image');
} else {
  var imageUrl = canvas.toDataURL('image/png');
  //Lets update our form and post
  jQuery("#_image").val(imageUrl);
  jQuery("#_imageForm").submit();
}

});

在服务器端,代码然后查找已发布的b64数据并将其推送到文件:

    if (array_key_exists('_image', $_POST)) {
  $source = $_POST['_image'];   
  $urlUploadImages = "/images/";
  $nameImage = uniqid("image", true) . ".png";

  $saveFile = $_SERVER['DOCUMENT_ROOT'] . $urlUploadImages . $nameImage;
  $image = str_replace('data:image/png;base64,', '', $source);
  $image = str_replace(' ', '+', $image);
  file_put_contents($saveFile, base64_decode($image));
    }

这大部分都有效。 png已创建并具有内容,但它被截断约2/3。创建的图像为512px x 512px,但较低的1/3只是透明的。

查看原始编码数据,我可以看到长度看起来不同,内容中似乎也有一些二进制文件。在以这种方式提交时,我还有什么办法可以保护内容吗?

0 个答案:

没有答案