2012-05-06 20 views
3

BitmapImage(Windows.UI.Xaml.Media.BitmapImage)をByte []配列に変換する方法はありますか?私は仕事試した何も.... (BitmapImageのは、バイト配列に変換できない場合)別の可能なシナリオは... Metro APP - Byte []へのBitmapImageまたはWebから画像をダウンロードしてByte []に​​変換する

をウェブから画像をダウンロードして配列に変換することではありません。しかし、私はしないでくださいどのように私がそれを行うことができるかを知ってください... 誰かがアイデアを持っているなら、それは本当にいいでしょう。

現在の試み:

 HttpClient http = new HttpClient(); 
     Stream resp = await http.GetStreamAsync("http://localhost/img/test.jpg"); 

     var ras = new InMemoryRandomAccessStream(); 
     await resp.CopyToAsync(ras.AsStreamForWrite()); 

     BitmapImage bi = new BitmapImage(); 
     bi.SetSource(ras); 


     byte[] pixeBuffer = null; 

     using (MemoryStream ms = new MemoryStream()) 
     { 
      int i = bi.PixelHeight; 
      int i2 = bi.PixelWidth; 
      WriteableBitmap wb = new WriteableBitmap(bi.PixelWidth, bi.PixelHeight); 

      Stream s1 = wb.PixelBuffer.AsStream(); 
      s1.CopyTo(ms); 

      pixeBuffer = ms.ToArray(); 
     } 

しかし、それは動作しませんが...私& I2はいつもRASは何が起こっている....正しく動作しません0に設定されていますか?

おかげで、あなたのコードで

答えて

1

あなたがそれらにアクセスするとき、それはそのPixelWidth/PixelHeightを知らないので、BitmapImageのは、ウェブから画像をロードするためにあなたが待っていることはありません。たとえば、AsyncUIライブラリを使用して "await bi。WaitForLoadedAsync()"と呼んで、読み込むのを待つことができます。これはBitmapImageがピクセルへのアクセス権を与えず、BitmapImageをWriteableBitmapに変換するAPIがないため、デコードされたピクセルにアクセスしたい場合にはここでは役に立ちません。

トピックについてearlier questionを確認できます。あなたはHttpClient.GetAsync()のようなものでウェブから画像ファイルを入手し、BitmapDecoderのようなものを使って画像ファイルをロードする必要があります。

関連する問題