Xamarin.ios 如何将图像转换为内存流?

Xamarin.ios 如何将图像转换为内存流?,xamarin.ios,xamarin.android,xamarin.forms,Xamarin.ios,Xamarin.android,Xamarin.forms,我是xamarin的新手。我正在设计一个使用SignaturePad的应用程序。签名正在使用内存流转换为字节,在Android中运行良好。但在IOS中,我得到了异常指定的强制转换无效或无效强制转换异常。下面是我实现的代码 SignaturepadView.Xaml代码: <Grid VerticalOptions="Center"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/

我是xamarin的新手。我正在设计一个使用SignaturePad的应用程序。签名正在使用内存流转换为字节,在Android中运行良好。但在IOS中,我得到了异常指定的强制转换无效或无效强制转换异常。下面是我实现的代码

SignaturepadView.Xaml代码:

<Grid VerticalOptions="Center">
     <Grid.RowDefinitions>
           <RowDefinition Height="Auto"/>
           <RowDefinition Height="Auto"/>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*"/>
           <ColumnDefinition Width="*"/>
     </Grid.ColumnDefinitions>
     <signature:SignaturePadView x:Name="padView" 
                                 Grid.Row="0" 
                                 Grid.ColumnSpan="2"
                                 HeightRequest="100" 
                                 WidthRequest="240"
                                 BackgroundColor="#887e70"
                                 PromptText=""
                                 CaptionText=""
                                 PromptTextColor="Red"
                                 StrokeColor="#ece6dd" 
                                 StrokeWidth="3" />
      <Button Grid.Row="1" 
              Grid.Column="0" 
              Text="Save Signature" 
              Clicked="OnSaveClicked"/>
      <Button Grid.Row="1" 
              Grid.Column="1" 
              Text="Clear" 
              Clicked="OnClearClicked"/>
</Grid>

在Xaml.cs中

private async void OnSaveClicked(object sender, EventArgs e)
{
     var format = SignatureImageFormat.Png;
     var image = await padView.GetImageStreamAsync(format);`
     var signatureMemoryStream = (MemoryStream)image;
     byte[] data = signatureMemoryStream.ToArray();
     DependencyService.Get<IPicture>().SavePictureToDisk("signimage", data);
}
私有异步void OnSaveClicked(对象发送方,事件参数e)
{
var format=SignatureImageFormat.Png;
var image=await padView.GetImageStreamAsync(格式)`
var signatureMemoryStream=(MemoryStream)图像;
字节[]数据=signatureMemoryStream.ToArray();
DependencyService.Get().SavePictureToDisk(“signimage”,数据);
}
这在Android中运行良好。但我得到的异常指定强制转换对于IOS无效或无效强制转换异常。我做错什么了吗?。请帮帮我。提前谢谢


注意:我也在PCL、Android和IOS中安装了这个软件包。对不起,我的英语不好。

哪一行导致了异常?您试图强制转换的对象的类型是什么?感谢您的回复@Jason。我在var signatureemorystream=(MemoryStream)image;。。。。我把这条线改成。。。var ms=新内存流();图像。复制到(ms);它在android中工作正常,但在IOS中我看不到任何东西。它没有引发任何异常。在调试时,我得到了图像的字节数组。但它没有存储在照片中。请帮助我。如果它在一个平台上工作,但在另一个平台上不工作,问题很可能出在您的DependencyServiceYes我理解。我也经历并实现了同样的问题。但我在照片中什么都没有得到。原因可能是什么?您确定您的iOS IPacture代码正在被调用吗?你有没有通过它来验证它在做什么?