2016-05-23 46 views
1

私はxamarin.formsのPCLプロジェクトでXamSVGライブラリを使用してImageSourceまたはFileImageSourceに変換できるsvg xmlを持っています。xamarin.formsイメージソースからバイト配列を取得

ImageSource/FileImageSourceを(ビットマップを取得するために)バイト配列に変換したいと考えています。

これは可能ですか?

+0

https://stackoverflow.com/questions/27532462/is-there-a-cross-platform-solution-to-imagesource-to-byte/27532867#27532867 –

+0

このリンクは私が必要なものではありません私はカメラを使用していません。私が持っているのはimagesourceの画像です。ビットマップ(バイト配列)を取得したいのですが – asaf

答えて

2

ImageSourceは、元の画像ソースを取得するメカニズムを公開していません。代わりに、イメージを作成する元のソースへの参照を手動で保持する必要があります。

+0

元のソースはありません。イメージファイルに変換するsvg xmlファイルがあります。 – asaf

+0

XamSVGライブラリを参照して、アクセス可能な中間のビットマップが作成されているかどうかを確認するか、または作成して1つを生成する必要があります。 – Jason

1

解決策が見つかりました!

 StreamImageSource streamImageSource = (StreamImageSource) some image source... 
     System.Threading.CancellationToken cancellationToken = System.Threading.CancellationToken.None; 
     Task<Stream> task = streamImageSource.Stream(cancellationToken); 
     Stream stream = task.Result; 
+0

と "a"とは何ですか? (3行目) – zuckerthoben

+0

はstreamImageSourceです – asaf

+0

私はそれを試してみました: "タイプ 'Xamarin.Forms.FileImageSource'のオブジェクトを 'Xamarin.Forms.StreamImageSource'にタイプできません。 – zuckerthoben

-1

その他のソリューション:

public static byte[] ReadFully(Stream input) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      input.CopyTo(ms); 
      return ms.ToArray(); 
     } 

    } 

ストリームとのMemoryStreamは、System.IOクラスです。

次に、このようにそれを使用します。

  byte[] TargetImageByte = ReadFully(_data.Source); 

_data.sourceはMediaFileがタイプです。

関連する問題