当我需要创建具有透明背景的图像时,我遇到了问题。我仍然不知道问题出在fabricjs 还是php 上。当我发送带有彩色背景的图像时,一切正常。当我发送具有透明背景的图像时会出现问题。生成的图像以黑色背景创建。所以,让我更好地解释一下:当用户单击保存按钮时,我将画布的字符串表示形式发送到服务器端的 php,以生成画布的图像。所以我使用以下函数通过 Ajax 发送画布的字符串表示(jQuery 的 POST 函数):
函数发送字符串表示(){ var strDataURI = canvas.toDataURL(); strDataURI = strDataURI.substr(22, strDataURI.length); $.post("action/createImage.php", { 字符串:strDataURI }, 功能(数据){ 如果(数据==“确定”){ $("#msg").html("图像创建。"); } 别的{ $("#msg").html("图像未创建。"); } }); }
在 PHP 文件中,我使用以下代码生成图像:
// createImage.php $data = base64_decode($_POST["str"]); $urlUploadImages = "../uploads/img/"; $nameImage = "test.png"; $img = imagecreatefromstring($data); 如果($img){ imagepng($img, $urlUploadImages.$nameImage, 0); 图像销毁($img); // [数据库代码] 回声“确定”; } 别的 { 回声“错误”; }
同样,问题只是背景透明画布。彩色背景一切正常。