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

时间:2017-07-18 07:33:40

标签: xamarin.ios xamarin.android xamarin.forms

我是xamarin的新手。我正在设计一个使用SignaturePad的应用程序。签名使用内存流转换为字节,并且在Android中工作正常。但是在IOS中我得到异常指定的强制转换无效或无效的强制转换Exception.Below是我实现的代码。

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

这在Android中工作正常。但我得到异常指定的强制转换无效或IOS的无效强制转换异常。我做错了吗?请帮我。在此先感谢。

注意:我在PCL,Android和IOS中也安装了包https://components.xamarin.com/view/signature-pad。抱歉我的英文。

0 个答案:

没有答案