如何将SignaturePad组件上捕获的签名保存到SQL Server数据库

时间:2015-08-07 09:47:54

标签: sql-server xamarin.android bytearray android-bitmap signaturepad

如上所述,我们应该如何使用SignaturePad组件将捕获的签名正确保存到SQL Server数据库?那么它应该很容易,考虑到组件使用的GetImage(false)方法返回一个Bitmap,然后使用Stream将Bitmap压缩为JPEG并转换为数组字节。然后应将字节数组直接保存到SQL Server数据库中;但是,这种方法的问题在于,当您从数据库中检索图像时,图像全部为黑色。就像笔画从未被捕获一样,有趣的是,SignaturePad的背景颜色设置为白色,笔触颜色为黑色。

Xamarin.Android按钮OnClick事件处理程序

var signature = this.SignatureView.GetImage(false); // This returns the Bitmap from SignaturePad.
var imageData = this.ImageToByteArray(signature); // This converts the Bitmap to byte[].

var result = this.SaveDataAsync(imageData); // Save the byte[] to the database.

Xamarin.Android扩展方法

private byte[] ImageToByteArray(Bitmap image)
{
    if (image == null) return null;

    byte[] result;

    using (var stream = new MemoryStream())
    {
        image.Compress(CompressFormat.Jpeg, 100, stream);
        result = stream.ToArray();
        stream.Flush();
    }

    return result;
}

这与我们在iOS上采用的方法相同,但不适用于Android。任何想法或工作解决方案都将非常感激。

谢谢!

  

Xamarin Forum - Components Section

复制

1 个答案:

答案 0 :(得分:0)

好的,我想我找到了这个问题的解决方案,这个问题在这个问题Signature Pad for Xamarin.Forms中有所描述。我不确定为什么我们需要在GetImage()方法中指定颜色,而已经指定了描边和背景颜色的属性。好吧,我猜绘制图像所需的颜色与属性的颜色不一样。