2016-08-24 26 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