2016-08-24 47 views
0

我需要将xamarin表单图像转换为base64格式,任何人都可以帮助我解决这个问题吗?将xamarin.image隐藏成base 64格式

这就是我一直在努力做到这一点,但它没有工作。

var inputStream = signatureImage.Source.GetValue(UriImageSource.UriProperty); 

      //Getting Stream as a Memorystream 
      var signatureMemoryStream = inputStream as MemoryStream; 

      if (signatureMemoryStream == null) 
      { 
       signatureMemoryStream = new MemoryStream(); 
       inputStream.CopyTo(signatureMemoryStream); 
      } 

      //Adding memorystream into a byte array 
      var byteArray = signatureMemoryStream.ToArray(); 

      //Converting byte array into Base64 string 
      base64String = Convert.ToBase64String(byteArray); 

“signatureImage”是图像名称。

+0

看一看http://stackoverflow.com/questions/33947138/convert-image-into-byte-array-in-xamarin-forms –

+0

感谢您的答复,但我怎么能通过文件路径?图像位于XAML中,图像源是根据从签名板获取的数据设置的。 –

回答

0

图像只是Xamarin窗体中的一个控件来显示图像。 这不是你可以从中获取图像字节数组的东西。

你会更好地使用Media Plugin并将其保存到磁盘。然后通过内存流加载并转换。您也可以使用FFImageLoading。它有2种方法可以是使用的你:

  1. GetImageAsJpgAsync(int quality = 90, int desiredWidth = 0, int desiredHeight = 0)
  2. GetImageAsPngAsync(int desiredWidth = 0, int desiredHeight = 0)

所谓的问题 - Convert Image into byte array in Xamarin.Forms展示了如何做到这一点的平台特定代码here

论坛主题(Convert Image to byte[])有很好的讨论为什么你不能从控制中获得它。

+0

感谢您的回复,但没有任何其他方式,我可以从XAML中获取图像,并将其转换为字节数组而不是保存并获取它? –

2

一旦你得到你的file路径,你可以使用下面的代码为我工作。

var stream = file.GetStream(); 
var bytes = new byte [stream.Length]; 
await stream.ReadAsync(bytes, 0, (int)stream.Length); 
string base64 = System.Convert.ToBase64String(bytes); 

我发现它here