签名板发送空

Posted

技术标签:

【中文标题】签名板发送空【英文标题】:Signature pad sending empty 【发布时间】:2019-10-31 12:20:35 【问题描述】:

我使用的是签名板和 SkiaSharp 的画布,但是当我在用户绘制后发送并编码到 base 64 时,服务器上只显示一个空画布

   async void OnSaveButtonClicked(object sender, EventArgs args)
    
        using (SKImage image = SKImage.FromBitmap(saveBitmap))
        
            try
            
                SKData data = image.Encode(SKEncodedImageFormat.Png, 100);
                var bytesImg = data.ToArray();
                string imageBase64 = Convert.ToBase64String(bytesImg);
                var respuesta = await this.ApiService.PostSignature(
                this.url,
                this.Id,
                imageBase64
                );

在服务上发送的方法... 公共异步任务 PostSignature( 字符串 urlBase, 字符串对开, 字符串 imageBase64) 尝试 var client = new HttpClient(); var response = await client.PostAsync(urlBase, 新的字符串内容(字符串。格式( "idReporte=0&imgFirma=1", 对开,图像编码), Encoding.UTF8, "application/x-www-form-urlencoded"));

            if (!response.IsSuccessStatusCode)
            
                return response.ToString();
            
            else
            
                var result = await response.Content.ReadAsStringAsync();
                return result;
            

        
        catch
        
            return null;
        
    

结束请求...

            catch (Exception ex)
            
                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "Image Is not Send, error: " + ex.Message,
                    "OK"

                    );
            
            finally
            
                completedPaths.Clear();
                inProgressPaths.Clear();
                UpdateBitmap();
                canvasView.InvalidateSurface();
            

图片为空,解码正常并加载到文件夹路径中。

【问题讨论】:

【参考方案1】:

根据您的描述,您想从签名板获取图像,并将其转换为base 64,我做了一个简单的,您可以看一下,只需将您的图像流转换为内存流

  <StackLayout>
        <forms:SignaturePadView
            x:Name="signaturepad"
            BackgroundColor="Black"
            HeightRequest="350"
            StrokeColor="White"
            StrokeWidth="3"
            WidthRequest="250" />

        <Button
            x:Name="save"
            Clicked="Save_Clicked"
            HeightRequest="50"
            Text="save"
            WidthRequest="200" />
    </StackLayout>



 private async void Save_Clicked(object sender, EventArgs e)
    
        string base64String;
        using (var memoryStream = new MemoryStream())
        
            var signature = await signaturepad.GetImageStreamAsync(SignatureImageFormat.Png);
            signature.CopyTo(memoryStream);
            var byteArray = memoryStream.ToArray();
            base64String = Convert.ToBase64String(byteArray);
        
    

【讨论】:

嗨 Cherry Bu,看,我正在尝试您发送给我的代码,但没有成功,我们对此感到满意,并且,最好尝试 Xcode Swift,但现在的问题是实现相同使用 UIImage 的东西,如果你想贡献,我很早就发布代码,坦克的所有人

以上是关于签名板发送空的主要内容,如果未能解决你的问题,请参考以下文章

PHP DocuSign:下载完成的签名文档时获取空文档

使用 C# 发送加密和签名的电子邮件

如何生成密钥,私钥,签名

如何删除错误报告

HttpClient 拒绝发送自签名客户端证书

数字签名到底是什么鬼?