2016-08-24 3 views
0

Ich muss ein Xamarin Formularbild in ein Base64 Format konvertieren, Kann mir jemand dabei helfen?Covert xamarin.image in Base 64 Format

So habe ich versucht, es zu tun, aber es tut Arbeit.

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" ist der Bildname.

+0

Werfen Sie einen Blick auf http://stackoverflow.com/questions/33947138/convert-image-into-byte-array-in-xamarin-forms –

+0

Danke für die Antwort , aber wie kann ich einen Dateipfad übergeben? Das Bild befindet sich in XAML, wo die Bildquelle anhand von Daten aus einem Signatur-Pad festgelegt wird. –

Antwort

0

Bild ist nur ein Steuerelement in Xamarin Formen, um das Bild anzuzeigen. Es ist nicht etwas, aus dem Sie Ihr Bild-Byte-Array herausholen können.

Sie werden besser die Media Plugin verwenden und auf der Festplatte speichern. Dann lade es über den Speicherstream und konvertiere.

Sie können auch FFImageLoading verwenden. Es verfügt über 2 Methoden, die für Sie nützlich sein können:

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

Die Frage SO - Convert Image into byte array in Xamarin.Forms zeigt, wie es in Plattform-spezifischen Code here zu tun.

Der Forum-Thread (Convert Image to byte[]) hat eine gute Diskussion darüber, warum Sie es nicht von der Kontrolle bekommen können.

+0

Danke für die Antwort, aber gibt es keine andere Möglichkeit, dass ich das Bild vom XAML bekommen und in ein Byte-Array konvertieren könnte, außer es zu speichern und zu bekommen? –

2

Sobald Sie Ihren file Pfad erhalten, können Sie den folgenden Code verwenden, der für mich arbeitete.

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

Ich fand es here

Verwandte Themen