У меня проблема, когда мне нужно создать изображение с прозрачным фоном. Я до сих пор не знаю, проблема в Fabricjs или в php. Все работает нормально, когда я отправил изображение с цветным фоном. Проблема возникает, когда я отправляю изображение с прозрачным фоном. Сгенерированное изображение создается с черным фоном. Итак, позвольте мне объяснить лучше: когда пользователь нажимает кнопку «Сохранить», я отправляю строковое представление холста в php на стороне сервера для создания изображения холста. Итак, я использую следующую функцию для отправки строкового представления холста с помощью Ajax (функция POST jQuery):
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'; }
Опять же, проблема только с фоновым прозрачным холстом. С цветным фоном все работает нормально.