c# - 如何从 Canvas 中的隐藏代码打开图像并让用户在此图像上绘图

标签 c# asp.net image html canvas

我是 HTML5 的初学者。

我想做的是:

canvas 中上传一张图片,然后允许用户在这张图片上绘图,这样我就可以将这张图片保存在我的数据库中。

我学会了如何通过这个画画 lesson


但是我不知道如何在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 - 在您在 ctx = document.getElementById('myCanvas').getContext("2d"); 之后引用的教程的 InitThis() 函数中添加这些行;在 Canvas 上显示图片

var image = new Image();
image.src = 'http://www.site.com/getImage.ashx';
$(image).load(function () {
    ctx.drawImage(image, 0, 0);
});

您还可以添加宽度和高度来拉伸(stretch)图像或填充 Canvas :

ctx.drawImage(image, 0, 0, 500, 200);

3 - 使用 Canvas 的 toDataURL 函数再次将最终绘图上传到服务器,并将图像保存到数据库。

将 Canvas 图像数据发送到服务器:

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 ...
        }
    }

关于c# - 如何从 Canvas 中的隐藏代码打开图像并让用户在此图像上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972012/

相关文章:

c# - 上下文菜单项

c# - 发布表单但不发布 View 状态

c# - 更新 HttpContext.Current.Request.QueryString

image - Coldfusion CFHTTP 问题与间接图像 URL

css - 将图像裁剪为 <div> 的大小

c# - 如何在 C# 中修改 SQL Server 数据库列中的错误日期

c# - 如何创建需要 4 个字符且无空格的正则表达式?

javascript - 从下拉列表 "select"标记获取值并存储在 DB ASP.net 中

java - 如何从数据库中插入图片到JTable

c# - Moq中的设置方法,调用不明确