Sql server 如何将SignaturePad组件上捕获的签名保存到SQL Server数据库
如上所述,我们应该如何使用SignaturePad组件将捕获的签名正确保存到SQL Server数据库?考虑到组件使用的GetImage(false)方法返回位图,然后使用流将位图压缩为JPEG和数组字节,这应该很容易。然后,字节数组应直接保存到SQL Server数据库中;但是,这种方法的问题是,当您从数据库检索图像时,图像都是黑色的。就像从来没有捕捉到笔划一样,有趣的是,背景颜色设置为白色,笔划颜色设置为黑色 Android按钮OnClick事件处理程序Sql server 如何将SignaturePad组件上捕获的签名保存到SQL Server数据库,sql-server,xamarin.android,bytearray,android-bitmap,signaturepad,Sql Server,Xamarin.android,Bytearray,Android Bitmap,Signaturepad,如上所述,我们应该如何使用SignaturePad组件将捕获的签名正确保存到SQL Server数据库?考虑到组件使用的GetImage(false)方法返回位图,然后使用流将位图压缩为JPEG和数组字节,这应该很容易。然后,字节数组应直接保存到SQL Server数据库中;但是,这种方法的问题是,当您从数据库检索图像时,图像都是黑色的。就像从来没有捕捉到笔划一样,有趣的是,背景颜色设置为白色,笔划颜色设置为黑色 Android按钮OnClick事件处理程序 var signature = th
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.
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上不起作用。如果您有任何想法或有效的解决方案,我们将不胜感激
谢谢
抄袭
好的,我想我找到了这个问题的解决方案,在这篇文章中有描述。我不知道为什么我们需要在GetImage()方法中指定颜色,而笔划和背景色的属性已经指定。嗯,我猜绘制图像所需的颜色与属性的颜色不一样。好的,我想我找到了解决这个问题的方法,这在本帖中有描述。我不知道为什么我们需要在GetImage()方法中指定颜色,而笔划和背景色的属性已经指定。嗯,我猜绘制图像所需的颜色与属性的颜色不一样。什么是“不工作”意思?如果我不够清楚,我向您道歉。“不工作”表示任何试图将使用“this.GetImage(false)”方法捕获的签名保存到SQL Server数据库中的行为,检索时图像返回全黑。在iOS上,我们能够使用与我的原始帖子中所述相同的方法检索从SignaturePad组件捕获的相同图像。当然,代码会略有不同,但结果应该与Android的相同。好吧,至少这是我们所期望的。。。我可能错了;因此,这个问题已经发布了。“不起作用”是什么意思?如果我不够清楚,我道歉。“不工作”表示任何试图将使用“this.GetImage(false)”方法捕获的签名保存到SQL Server数据库中的行为,检索时图像返回全黑。在iOS上,我们能够使用与我的原始帖子中所述相同的方法检索从SignaturePad组件捕获的相同图像。当然,代码会略有不同,但结果应该与Android的相同。好吧,至少这是我们所期望的。。。我可能错了;因此,这一问题已经公布。