2016-08-24 4 views
0

私はxamarinフォームイメージをbase64フォーマットに変換する必要があります。秘密のxamarin.imageをベース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を使用することもできます。 Convert Image into byte array in Xamarin.Formsは、プラットフォーム固有のコードhereでそれを行う方法を示しています -

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

SOの質問:それはあなたのために有用であることができ2つのメソッドを持っています。

フォーラムスレッド(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