Подпись планшета отправка пуста - PullRequest
1 голос
/ 18 июня 2019

Фирменная подпись отправляется пустым

Я использую Signature Pad и Canvas от 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
                );

Способ отправки на Сервисы ... public Async Task PostSignature ( строка urlBase, струнный фолио, строка imageBase64) { пытаться { var client = new HttpClient (); var response = await client.PostAsync (urlBase, новый StringContent (string.Format ( "IdReporte = {0} & imgFirma = {1}", фолио, imageEncoded), 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 Ответ

0 голосов
/ 18 июня 2019

Согласно вашему описанию, вы хотите получить изображение с панели подписи, и, преобразовав его в base 64, я делаю одну простую вещь, которую вы можете посмотреть, просто приведите ваш imagestream в memorystream

  <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);
        }
    }
...