当我需要创建具有透明背景的图像时,我遇到了一个问题。我仍然不知道问题出在 fabricjs 还是 php。当我发送带有彩色背景的图像时,一切正常。当我发送具有透明背景的图像时出现问题。 生成的图像是用黑色背景创建的。 那么,让我更好地解释一下: 当用户单击保存按钮时,我将 Canvas 的字符串表示形式发送到服务器端的 php,以生成 Canvas 的图像。因此,我使用以下函数通过 Ajax(jQuery 的 POST 函数)发送 Canvas 的字符串表示形式:
function sendStringRepresentation(){ var strDataURI = canvas.toDataURL(); strDataURI = strDataURI.substr(22, strDataURI.length); $.post("action/createImage.php", { str: strDataURI }, function(data){ if(data == "OK"){ $("#msg").html("Image created."); } else{ $("#msg").html("Image not created."); } }); }
在 PHP 文件中,我使用以下代码生成图像:
// createImage.php $data = base64_decode($_POST["str"]); $urlUploadImages = "../uploads/img/"; $nameImage = "test.png"; $img = imagecreatefromstring($data); if($img) { imagepng($img, $urlUploadImages.$nameImage, 0); imagedestroy($img); // [database code] echo "OK"; } else { echo 'ERROR'; }
同样,问题出在背景透明 Canvas 上。使用彩色背景一切正常。
最佳答案
最后一步恰恰相反:
imagecopyresampled( $img, $alpha_image, 0, 0, 0, 0, $w, $h, $w, $h );
瞧!图片是透明的!
关于php - 通过 Ajax 发送到 PHP 的 Fabric.js canvas.toDataURL(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771986/