我是 HTML5 的初学者。
我想做的是:
上传一张图片,canvas
然后允许用户在这张图片上画画,这样我就可以把这张图片保存在我的数据库中。
我学会了如何通过这一课画画
但我不知道如何在 Canvas 中打开图像,然后让用户在此图像上绘图。
如果我的理解是正确的:您想从数据库中检索图像,将其显示给用户以在其上绘制,然后将其上传回服务器以再次存储在数据库中!
1 - 创建一个 IHttpHandler (.ashx) 以从数据库中返回图像
public class ImageHandler : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
var myImage = function_to_read_the_image();
ctx.Response.ContentType = "image/png";
ctx.Response.OutputStream.Write(myImage);
}
}
将此保存为 getImage.ashx
2 - 在您引用的教程的 InitThis() 函数中添加这些行ctx = document.getElementById('myCanvas').getContext("2d"); 在画布上显示图片
var image = new Image();
image.src = 'http://www.site.com/getImage.ashx';
$(image).load(function () {
ctx.drawImage(image, 0, 0);
});
您还可以添加宽度和高度来拉伸图像或填充画布:
ctx.drawImage(image, 0, 0, 500, 200);
3 - 使用画布的 toDataURL 函数再次将最终绘图上传到服务器,并将图像保存到数据库。
将画布图像数据发送到服务器:
var Pic = document.getElementById("myCanvas").toDataURL("image/png");
Pic = Pic.replace(/^data:image\/(png|jpg);base64,/, "")
$.ajax({
type: 'POST',
url: 'Save_Picture.aspx/UploadPic',
data: '{ "imageData" : "' + Pic + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert("done, Image Uploaded.");
}
});
读取和保存图像服务器端:
using System;
using System.Web;
using System.IO;
using System.Web.Script.Services;
using System.Web.Services;
[ScriptService]
public partial class Save_Picture : System.Web.UI.Page
{
[WebMethod()]
public static void UploadPic (string imageData)
{
byte[] data = Convert.FromBase64String(imageData);
// save it in a file or database ...
}
}
将图像加载到画布中:
var image = new Image();
image.addEventListener("load", function() {
ctx.drawImage(image, x, y);
});
image.src = 'http://server/image.jpg';