Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将SignaturePad组件上捕获的签名保存到SQL Server数据库_Sql Server_Xamarin.android_Bytearray_Android Bitmap_Signaturepad - Fatal编程技术网

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

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

如上所述,我们应该如何使用SignaturePad组件将捕获的签名正确保存到SQL Server数据库?考虑到组件使用的GetImage(false)方法返回位图,然后使用流将位图压缩为JPEG和数组字节,这应该很容易。然后,字节数组应直接保存到SQL Server数据库中;但是,这种方法的问题是,当您从数据库检索图像时,图像都是黑色的。就像从来没有捕捉到笔划一样,有趣的是,背景颜色设置为白色,笔划颜色设置为黑色

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.
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的相同。好吧,至少这是我们所期望的。。。我可能错了;因此,这一问题已经公布。