我是Xamarin的初学者。 我试图编写一个简单的应用程序来借助Signature Pad保存签名。 来自MainPage.xaml的一段代码
<controls:SignaturePadView x:Name="SignaturePAD"
Grid.Row="1"
StrokeColor="Black"
StrokeWidth="3"
BackgroundColor="Gray"
CaptionTextColor="Black"
PromptTextColor="Black"
SignatureLineColor="Black"
CaptionText="Podpis odbiorcy">
</controls:SignaturePadView>
<Button Grid.Row="2"
x:Name="SaveButton"
Text="Potwierdź"
Clicked="SaveSignature"/>
和MainPage.xaml.cs中的一个片段
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
public async void SaveSignature(object sender, EventArgs e)
{
Stream image = await SignaturePAD.GetImageStreamAsync(SignatureImageFormat.Png);
}
}
我的问题是如何将其保存到手机库中? 我将不胜感激
答案 0 :(得分:0)
SignaturePad
返回一个流-因此您可以使用普通的C#I / O将其写入文件,例如FileStream
Stream image = await SignaturePAD.GetImageStreamAsync(SignatureImageFormat.Png);
using (FileStream file = new FileStream(file_path, FileMode.Create, System.IO.FileAccess.Write))
{
image.CopyTo(file);
}
答案 1 :(得分:0)
您也许可以在某个地方找到可以帮您实现此目的的插件,但是我会像这样将stream
转换为byte[]
:
using (image)
using (var memoryStream = new MemoryStream())
{
await image.CopyToAsync(memoryStream);
var picture = memoryStream.ToArray();
}
然后将byte []转换为每个平台上的本机图片。
对于Android使用:
BitmapFactory.DecodeByteArray(picture, 0, picture.Length);
对于iOS使用:
var nsData = NSData.FromArray(picture);
var uiImage = UIImage.LoadFromData(nsData);
然后,您需要将图像添加到基础画廊。这是一个如何在iOS上实现类似效果的示例:https://developer.xamarin.com/recipes/ios/media/video_and_photos/save_photo_to_album_with_metadata/
对于Android,该帖子可能会有所帮助:Xamarin.Forms Android save image to gallery