как мы можем сохранить изображение html5 canvas в базу данных в php

Я создаю страницу дизайна продукта для веб-сайта электронной коммерции … Мне нужно сохранить созданный образ с клиентской стороны в базу данных …. Я пытался сохранить, но он не мог сохранить … и 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, а затем сохранены в вашей базе данных, как обычно.