Я создаю страницу дизайна продукта для веб-сайта электронной коммерции … Мне нужно сохранить созданный образ с клиентской стороны в базу данных …. Я пытался сохранить, но он не мог сохранить … и html5 canvas для меня новый …
Мой html-код .. ……………….
<div id="clothing-designer"> <div class="fpd-product" title="Shirt Front" data-thumbnail="images/yellow_shirt/front/preview.png"> <img src="./images/yellow_shirt/front/base.png" title="Base Front" data-parameters='{"x": 123, "y": 81, "colors": "#d59211", "price": 20}' /> <img src="./images/yellow_shirt/front/body.png" title="Hightlights" data-parameters='{"x": 249, "y": 80}' /> <img src="./images/yellow_shirt/front/shadows.png" title="Shadow" data-parameters='{"x": 123, "y": 81}' /> <span title="Any Text" data-parameters='{"x": 243, "y": 181, "removable": true, "draggable": true, "rotatable": true, "resizable": true, "colors": "#000000"}'>Default Text</span> <div class="fpd-product" title="Shirt Back" data-thumbnail="images/yellow_shirt/back/preview.png"> <img src="./images/yellow_shirt/back/base.png" title="Base Back" data-parameters='{"x": 123, "y": 81, "colors": "#d59211", "price": 20}' /> <img src="./images/yellow_shirt/back/body.png" title="Hightlights" data-parameters='{"x": 277, "y": 79}' /> <img src="./images/yellow_shirt/back/shadows.png" title="Shadow" data-parameters='{"x": 123, "y": 81}' /> </div> </div>
Вы даете небольшую информацию, но вот краткий обзор процесса, который вам понадобится.
Полное описание того, как получить информацию о дизайне от клиента к вашей базе данных, выходит за рамки обсуждения Stackoverflow, но этот пример должен помочь вам начать работу с этими концепциями.
Преобразовать холст в файл imageUrl
Если вы хотите сохранить содержимое холста в качестве изображения, вы можете использовать canvas.toDataURL (), который возвращает DataURL в холсте в формате .png. Например:
var canvas=document.getElementById("myCanvas"); var dataUrl=canvas.toDataURL();
Отправьте этот dataUrl обратно на сервер с поста AJAX
$.ajax({ type: "POST", url: "http://localhost/saveCanvasDataUrl.php", data: {image: dataUrl} }) .done(function(respond){console.log("done: "+respond);}) .fail(function(respond){console.log("fail");}) .always(function(respond){console.log("always");})
На стороне PHP сохраните входящий dataURL в базу данных:
<?php if(!isset($_POST["code"])){ die("Post was empty."); } $sql="insert into designs(image) values(:image)"; // INSERT with named parameters $conn = new PDO('mysql:host=localhost;dbname=myDB', "root", "myPassword"); $stmt = $conn->prepare($sql); $stmt->bindValue(":image",$_POST["image"]); $stmt->execute(); $affected_rows = $stmt->rowCount(); echo $affected_rows; ?>
С другой стороны …
С учетом всего сказанного может оказаться более полезным сохранить компоненты дизайна, созданные пользователем, а не образ этого дизайна.
Создайте объект javascript, содержащий конкретную информацию о дизайне:
var item1={ product:"shirt", color:"#d59211", price:20, text:"Default Text", textX:243, textY:181 }
Используйте JSON для преобразования этого объекта в строку
var item1Json=JSON.stringify(item1);
Затем опубликуйте полезные данные дизайна в своей базе данных вместо изображения.
Вы можете использовать HTML5 Canvas ' toDataURL()
который согласно документам:
Возвращает данные: URL-адрес, содержащий представление изображения в формате, указанном типом (по умолчанию для PNG)
Он используется следующим образом:
var canvas = document.getElementById('thecanvaselement'); // ...maybe some more canvas drawing operations here var url = canvas.toDataURL();
Результаты (сохраненные в переменной url
) затем могут быть отправлены обратно на сервер с использованием AJAX, а затем сохранены в вашей базе данных, как обычно.