【问题标题】: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();
            }

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

【问题讨论】:

    标签: forms xamarin signaturepad


    【解决方案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 的东西,如果你想贡献,我很早就发布代码,坦克的所有人
    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2022-06-18
    • 2016-12-25
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多