背景が透明な画像を作成する必要がある場合、ここで問題が発生します。問題が fabricjs にあるのか php にあるのかはまだわかりません。色付きの背景を持つ画像を送信すると、すべて正常に動作します。背景が透明な画像を送信すると問題が発生します。生成された画像は、黒の背景で作成されます。ユーザーが保存ボタンをクリックすると、キャンバスの文字列表現がサーバー側のphpに送信され、キャンバスの画像が生成されます。したがって、次の関数を使用して、キャンバスの文字列表現を Ajax (jQuery の POST 関数) で送信しています。
関数 sendStringRepresentation(){ var strDataURI = canvas.toDataURL(); strDataURI = strDataURI.substr(22, strDataURI.length); $.post("action/createImage.php", { str: strDataURI }、 関数(データ){ if(data == "OK"){ $("#msg").html("画像が作成されました。"); } そうしないと{ $("#msg").html("画像が作成されていません。"); } }); }
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); // [データベース コード] エコー "OK"; } そうしないと { echo 'エラー'; }
繰り返しますが、問題は背景が透明なキャンバスだけです。色付きの背景を使用すると、すべて正常に機能します。