签名板发送空
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 的东西,如果你想贡献,我很早就发布代码,坦克的所有人以上是关于签名板发送空的主要内容,如果未能解决你的问题,请参考以下文章