C# 签名板保存图像

C# 签名板保存图像,c#,jquery,asp.net,C#,Jquery,Asp.net,我正在试用签名板,并设置了一个很好的示例。但我不知道如何将图像保存为jpeg或类似的格式 我正在尝试保存图像,然后将其显示在占位符中,以便查看它是否正常工作 下面是我的代码: Default.aspx 画布后面有一个输入类型。给它一个Id并添加runat=“server”。将signatureJson替换为Id.Value。它应该可以工作。画布后面有一个输入类型。给它一个Id并添加runat=“server”。将signatureJson替换为Id.Value。它应该可以工作。使用这些行 Sys

我正在试用签名板,并设置了一个很好的示例。但我不知道如何将图像保存为jpeg或类似的格式

我正在尝试保存图像,然后将其显示在占位符中,以便查看它是否正常工作

下面是我的代码:

Default.aspx
画布后面有一个输入类型。给它一个Id并添加runat=“server”。将signatureJson替换为Id.Value。它应该可以工作。

画布后面有一个输入类型。给它一个Id并添加runat=“server”。将signatureJson替换为Id.Value。它应该可以工作。

使用这些行

System.IO.MemoryStream ms = New System.IO.MemoryStream();
Bitmap signatureImage  = New Bitmap(800, 800);

signatureImage  = SignObj.SigJsonToImage(signatureJson);
signatureImage .Save(ms, Imaging.ImageFormat.Bmp);
signatureImage .Save("FilePath/" + "image.png");
图像将保存在给定的路径上,然后您可以在任何需要的地方使用此图像

使用这些行

System.IO.MemoryStream ms = New System.IO.MemoryStream();
Bitmap signatureImage  = New Bitmap(800, 800);

signatureImage  = SignObj.SigJsonToImage(signatureJson);
signatureImage .Save(ms, Imaging.ImageFormat.Bmp);
signatureImage .Save("FilePath/" + "image.png");

图像将保存在给定的路径上,然后您可以在任何地方使用此图像使用以下代码将位图保存到您需要的任何位置。单击按钮保存图像时放入此代码。在ClientClick of按钮中,将json数据设置为隐藏字段(在下面的示例中:signJson)


使用以下代码将位图保存到所需的任何位置。单击按钮保存图像时,请输入此代码。在ClientClick of按钮中,将json数据设置为隐藏字段(在下面的示例中:signJson)

//HTML5
//Javascript
var mycanvas=document.getElementById(“签名”)//拿你的帆布
var image=mycanvas.toDataURL(“image/png”)//转换
document.getElementById(“imgsaveSignature”).src=image;
document.getElementById(“imgsaveSignature”).style.display=“inline”;
image=image.replace('data:image/png;base64','');
document.getElementById(“hdnSignatureImageData”).value=image;
//在代码背后
将fs用作新的文件流(SignatureImpath,FileMode.Create)
将bw用作新的二进制编写器(fs)
作为字节()的Dim数据=Convert.FromBase64String(hdnSignatureImageData.Value)
写入(数据)
bw.Close()
终端使用
财政司司长(关闭)
终端使用
//HTML5
//Javascript
var mycanvas=document.getElementById(“签名”)//拿你的帆布
var image=mycanvas.toDataURL(“image/png”)//转换
document.getElementById(“imgsaveSignature”).src=image;
document.getElementById(“imgsaveSignature”).style.display=“inline”;
image=image.replace('data:image/png;base64','');
document.getElementById(“hdnSignatureImageData”).value=image;
//在代码背后
将fs用作新的文件流(SignatureImpath,FileMode.Create)
将bw用作新的二进制编写器(fs)
作为字节()的Dim数据=Convert.FromBase64String(hdnSignatureImageData.Value)
写入(数据)
bw.Close()
终端使用
财政司司长(关闭)
终端使用

我已经尝试了很多以上的代码,但是上面的所有代码都不起作用。我已经尝试了下面的代码,它对我有效

这将包括在内

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SignaturePad.fonts.Controllers;
using SignaturePad.models;
using SignaturePad.Controllers;
using System.Drawing;
using System.Drawing.Imaging;
这些是保存位图图像的代码

var sigToImg = new SignatureToImage();
var signatureImage = sigToImg.SigJsonToImage(/*Bipmapstring which we nees to convert to immage or the string return by output hidden field*/);          
Bitmap myBitmap;
        ImageCodecInfo myImageCodecInfo;
        Encoder myEncoder;
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;

        // Create a Bitmap object based on a BMP file.
        myBitmap = new Bitmap(signatureImage);

        // Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo("image/jpeg");

        // Create an Encoder object based on the GUID 

        // for the Quality parameter category.
        myEncoder = Encoder.Quality;

        // Create an EncoderParameters object. 

        // An EncoderParameters object has an array of EncoderParameter 

        // objects. In this case, there is only one 

        // EncoderParameter object in the array.
        myEncoderParameters = new EncoderParameters(1);

        myEncoderParameter = new EncoderParameter(myEncoder, 75L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save(Server.MapPath("/Content/Shapes050.jpg"), myImageCodecInfo, myEncoderParameters);/Content/Shapes050.jpg:is server path

我已经尝试了以上很多,但所有上述吃不工作,我已经尝试了下面的代码,它是为我工作

这将包括在内

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SignaturePad.fonts.Controllers;
using SignaturePad.models;
using SignaturePad.Controllers;
using System.Drawing;
using System.Drawing.Imaging;
这些是保存位图图像的代码

var sigToImg = new SignatureToImage();
var signatureImage = sigToImg.SigJsonToImage(/*Bipmapstring which we nees to convert to immage or the string return by output hidden field*/);          
Bitmap myBitmap;
        ImageCodecInfo myImageCodecInfo;
        Encoder myEncoder;
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;

        // Create a Bitmap object based on a BMP file.
        myBitmap = new Bitmap(signatureImage);

        // Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo("image/jpeg");

        // Create an Encoder object based on the GUID 

        // for the Quality parameter category.
        myEncoder = Encoder.Quality;

        // Create an EncoderParameters object. 

        // An EncoderParameters object has an array of EncoderParameter 

        // objects. In this case, there is only one 

        // EncoderParameter object in the array.
        myEncoderParameters = new EncoderParameters(1);

        myEncoderParameter = new EncoderParameter(myEncoder, 75L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save(Server.MapPath("/Content/Shapes050.jpg"), myImageCodecInfo, myEncoderParameters);/Content/Shapes050.jpg:is server path

我这样做了,并使用了一个web服务

我甚至在表单上为“保存签名”按钮添加了此提交

<script>
      $(document).ready(function () {
          var api = $('.sigPad').signaturePad({ drawOnly: true });

          $("form").submit(function () {
              // alert(api.validateForm());
              if (api.validateForm()) {
                  var pid = <%=Session["PatientID"].ToString()%>;
                  var image = document.getElementById("myCanvas").toDataURL("image/png");
                  image = image.replace('data:image/png;base64,', '');
                  $.ajax({
                      type: 'POST',
                      async: false,
                      url: '/webservice/service1.asmx/UploadImage',
                      data: '{ "imageData" : "' + image + '", "pid" : "' + pid + '" }',
                      contentType: 'application/json; charset=utf-8',
                      dataType: 'json',
                      success: function (msg) {
                          window.location.replace("https://yourdomain.com/ConsentForm.aspx");
                      }
                  });

              }
              return false;
          });
      });
  </script>

我这样做了,并使用了一个web服务

我甚至在表单上为“保存签名”按钮添加了此提交

<script>
      $(document).ready(function () {
          var api = $('.sigPad').signaturePad({ drawOnly: true });

          $("form").submit(function () {
              // alert(api.validateForm());
              if (api.validateForm()) {
                  var pid = <%=Session["PatientID"].ToString()%>;
                  var image = document.getElementById("myCanvas").toDataURL("image/png");
                  image = image.replace('data:image/png;base64,', '');
                  $.ajax({
                      type: 'POST',
                      async: false,
                      url: '/webservice/service1.asmx/UploadImage',
                      data: '{ "imageData" : "' + image + '", "pid" : "' + pid + '" }',
                      contentType: 'application/json; charset=utf-8',
                      dataType: 'json',
                      success: function (msg) {
                          window.location.replace("https://yourdomain.com/ConsentForm.aspx");
                      }
                  });

              }
              return false;
          });
      });
  </script>

此特定部分:var signatureImage=sigToImg.SigJsonToImage(signatureJson);我不确定在这个例子中,如果我没有被安排在任何地方,那是怎么得到那个签名的?有人能帮我解决这个问题吗?这个特殊的部分:var signaturemage=sigToImg.SigJsonToImage(signatureJson);我不确定在这个例子中,如果我没有被安排在任何地方,那是怎么得到那个签名的?有人能帮我解决这个问题吗?可以做更多的解释,但这是一个有效的解决方案可以做更多的解释,但这是一个有效的解决方案这是一个非常干净和简单的解决方案。谢谢这是一个非常干净简单的解决方案。谢谢
public void UploadImage(string imageData, string pid)
    {
        //Do what you need with the patient ID (pid) if you need to use it
        string fileNameWitPath = path + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
        using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
        {
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                byte[] data = Convert.FromBase64String(imageData);
                bw.Write(data);
                bw.Close();
            }
        }
    }