HTML5 Canvas element is a drawing API which can be used for rendering graphs, game graphics, to draw line/image etc. Canvas is a rectangle area which can be added to our HTML5 page. To get the image data URL of the canvas, we can use the toDatURL() method of the canvas object which converts the canvas drawing into a 64 bit encoded PNG/JPEG/BITMAP URL.
PaintingApplicationTest.aspx
PaintingApplicationTest.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="PaintingApplicationTest.aspx.vb" Inherits="PaintingApplicationTest" %> <!DOCTYPE html /> <html lang="en"> <head> <title>Paint Testing App</title> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/ jquery-1.6.1.min.js"></script> <script type="text/javascript"> // setup our test canvas // and a simple drawing function window.onload = function () { var bMouseIsDown = false; var oCanvas = document.getElementById("thecanvas"); var oCtx = oCanvas.getContext("2d"); var iWidth = oCanvas.width; var iHeight = oCanvas.height; oCanvas.onmousedown = function (e) { bMouseIsDown = true; iLastX = e.clientX - oCanvas.offsetLeft + (window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft); iLastY = e.clientY - oCanvas.offsetTop + (window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop); } oCanvas.onmouseup = function () { bMouseIsDown = false; iLastX = -1; iLastY = -1; } oCanvas.onmousemove = function (e) { if (bMouseIsDown) { var iX = e.clientX - oCanvas.offsetLeft + (window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft); var iY = e.clientY - oCanvas.offsetTop + (window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop); oCtx.moveTo(iLastX, iLastY); oCtx.lineTo(iX, iY); oCtx.stroke(); iLastX = iX; iLastY = iY; } } } </script> <script type="text/javascript"> // Send the canvas image to the server. $(function () { $("#btnSave").click(function () { var image = document.getElementById("thecanvas").toDataURL("image/png"); image = image.replace('data:image/png;base64,', ''); $.ajax({ type: 'POST', url: 'PaintingApplicationTest.aspx/UploadImage', data: '{ "imageData" : "' + image + '" }', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (msg) { alert('Image saved successfully !'); } }); }); }); </script> </head> <body> <form id="form1" runat="server"> <canvas width="400" height="200" style="border: 1px solid black;" id="thecanvas"></canvas> <input type="button" id="btnSave" name="btnSave" value="Save" /> <asp:Button runat="server" ID="btnShow" Text="Show Saved Image" OnClick="btnShow_Click" /> <asp:Image ID="Image1" style="width:200px" Runat="server" /> </form> </body> </html>PaintingApplicationTest.aspx.cs
Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.IO Imports System.Web.Script.Services Imports System.Web.Services Imports System.Data.SqlClient Imports System.Data <ScriptService()> _ Partial Public Class PaintingApplicationTest Inherits System.Web.UI.Page <WebMethod()> _ Public Shared Sub UploadImage(imageData As String) Dim constr As String = System.Web.Configuration. WebConfigurationManager. ConnectionStrings("SqlServerReadOnly"). ConnectionString Dim con As New SqlConnection(constr) Dim cmd As New SqlCommand() cmd.Connection = con //make sure you use SP or Parameterized query Dim sql As String = "INSERT INTO HTML5CanvasImage (imageData) VALUES('" + imageData + "')" cmd.CommandText = sql con.Open() cmd.ExecuteNonQuery() con.Close() End Sub Protected Sub btnShow_Click(sender As Object, e As EventArgs) Dim constr As String = System.Web.Configuration. WebConfigurationManager. ConnectionStrings("SqlServerReadOnly"). ConnectionString Dim sql As String = "SELECT ImageData FROM HTML5CanvasImage" Dim cmd As SqlCommand = New SqlCommand(sql, New SqlConnection(constr)) cmd.Connection.Open() Dim imgString As String = cmd.ExecuteScalar(). ToString() Image1.Attributes("src") = "data:image/png;base64," + imgString cmd.Connection.Close() End Sub End Class
Output:
Draw and save the image:
Display saved image from SQL database:
Click here
Click here
Click here
Happy Coding!!