如上所述,我们应该如何使用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。任何想法或工作解决方案都将非常感激。
谢谢!
复制
答案 0 :(得分:0)
好的,我想我找到了这个问题的解决方案,这个问题在这个问题Signature Pad for Xamarin.Forms中有所描述。我不确定为什么我们需要在GetImage()方法中指定颜色,而已经指定了描边和背景颜色的属性。好吧,我猜绘制图像所需的颜色与属性的颜色不一样。