当我需要创建具有透明背景的图像时,我遇到了问题。我还是不知道问题出在fabricjs还是php。当我发送带有彩色背景的图像时,一切正常。当我发送具有透明背景的图像时会出现问题。
生成的图像是用黑色背景创建的。
那么,让我更好地解释一下:
当用户单击保存按钮时,我将画布的字符串表示形式发送到服务器端的 php,以生成画布的图像。因此,我使用 follow 函数通过 Ajax 发送画布的字符串表示形式(jQuery 的 POST 函数):
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';
}
同样,问题出在背景透明画布上。有了彩色背景,一切正常。
最后一步则完全相反:
imagecopyresampled( $img, $alpha_image, 0, 0, 0, 0, $w, $h, $w, $h );
瞧!图像是透明的!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)