如何将Kineticjs画布上的图像保存到数据库?

我有一个帆布如何将Kineticjs画布上的图像保存到数据库?

function initStage(images) { 

var stage = new Kinetic.Stage({

container: "container",

width: 550,

height: 550

});

和保存按钮

$('#save').click(function() { 

stage.toDataURL(function(dataUrl) {

$.ajax("ajax.php", { data: dataUrl },

function(data) {

alert("Your Design Was Saved To The Server");

}); }); });

和ajax.php

$png =$_POST['data']; 

$filteredData=substr($png, strpos($png, ",")+1);

$unencodedData=base64_decode($filteredData);

$fp = fopen('image.png', 'wb');

fwrite($fp, $unencodedData);

fclose($fp);

如何保存dataURL到我的数据库?

回答:

您现在正在直接写入服务器的文件系统,始终使用'image.png'作为其名称(我假设这是一个测试网站,而不是生产网站)。

如果你婉图像内容保存到数据库,你必须:

  1. 创建一个数据库,利用数据库引擎,你要使用
  2. 创建一个表并添加BLOB类型用于存储图像的内容。您可能还想获取自动递增的ID字段,以便稍后可以使用其ID值检索图像。实际的表是这样的: CREATE TABLE image_table(ID INTEGER AUTO_INCREMENT, IMAGE BLOB, PRIMARY KEY (ID)) ENGINE=InnoDB;
  3. 连接到数据库使用您要使用
  4. 执行INSERT SQL语句,传递$_POST['data']内容作为参数的凭据。

$connection = @mysqli_connect('database_hostname','database_username', 

'database_password','database_databasename');

mysqli_query($connection ,"INSERT INTO image_table VALUES(NULL, '".

mysqli_real_escape_string($connection , $_POST['data']) ."')");

的调用mysqli_real_escape_string要正确逃生用JS脚本发送的数据,以便SQL查询中也不会造成麻烦。

如果你想从数据库中检索图像,你必须使用一个SELECT类型的查询,如SELECT ID, IMAGE FROM image_table WHERE ID='".intval(ID)."';"

一旦你从数据库中的图像,你可以使用这样的送它的浏览器:

//get the data from the database somehow (mysql query et al.) 

//let's assume data retrieved from the DB is in $data

header('Content-Type: image/png');//alter for png/gif/etc.

echo $data['IMAGE'];

在HTML页面中,你会使用这样

<img src="/myimagescript.php?id=ID"> 

回答:

你不说你正在使用哪个数据库。也许MySQL因为你使用PHP?

这里有一个例子开始你的dataUrl字符串保存到MySQL数据库:

$conn = new PDO('mysql:host=myHost;dbname=myDatabase', "myUser", "myPassword"); 

// INSERT with named parameters

$stmt = $conn->prepare("INSERT INTO myTable(myImageColumnName)VALUES(:theImage)");

$stmt->bindValue(":theImage",$unencodedData);

$stmt->execute();

$affected_rows = $stmt->rowCount();

echo $affected_rows;

当然,所有的例子my...必须由实际的数据库值来代替。

以上是 如何将Kineticjs画布上的图像保存到数据库? 的全部内容, 来源链接: utcz.com/qa/257188.html

回到顶部