2011-01-13 25 views
1

私のアプリが起動したときにたくさんの画像をプリロードしたいです。WPF Blobストレージからの画像のダウンロード

私は店、私は雲から画像バイトをダウンロードしたい

(このアドレスはところでHTTPSアドレスです)ブロブストレージとしてクラウドに保存されたその画像のURLが含まれているImageクラスを持っていますそれらをオブジェクト上に置いて、イメージを表示する時間が来たら、そのバイトからイメージをロードします。

私は、このために、すべてのコードがありますが、私は例外を得続ける:

この操作を完了するのに適しませイメージングコンポーネントが見つかりませんでした。ここで

は私のコードです:私は、画面上の画像を取得したいときFIX

//Loaded on start-up 
    private static void LoadImageBytes(Image img) 
    { 
     var urlUri = new Uri(img.Url); 
     var request = (HttpWebRequest)WebRequest.CreateDefault(urlUri); 
     MemoryStream memStream = new MemoryStream(); 

     using (var response = request.GetResponse()) 
     { 
      var buffer = new byte[4096]; 
      using (var stream = response.GetResponseStream()) 
      { 
       int bytesRead = stream.Read(buffer, 0, buffer.Length); 
       while (bytesRead > 0) 
       { 
        memStream.Write(buffer, 0, bytesRead); 
        bytesRead = stream.Read(buffer, 0, buffer.Length); 
       } 

       img.ImageBytes = memStream.ToArray(); 
      } 
     } 
    } 

で更新EDITは、その後、私はこれを呼び出す:

public BitmapImage ImageFromBuffer(Byte[] bytes) 
    { 
     MemoryStream stream = new MemoryStream(bytes); 
     stream.Seek(0, SeekOrigin.Begin); 
     BitmapImage image = new BitmapImage(); 
     image.BeginInit(); 
     image.StreamSource = stream; 
     image.EndInit(); 
     return image; 
    } 

しかしにEndInit()呼び出し例外が発生します。

私はいくつかのテストを行いました。ローカルファイルシステムからファイルをロードすると、クラウド内のイメージとは異なるバイトセットが取得されます。私はブロブストレージやhttpsと何か関係がありますか?

はい、私はその画像を閲覧することができ、その画像は壊れていません。固定

EDIT、今すべての良い

答えて

0

あなたはこの行が正しいことを確認していますか?

while (stream.Read(buffer, 0, buffer.Length) > 0) 
       img.ImageBytes = buffer; 

img.ImageBytesは最後の読み取りバッファを保持します。

+0

いいえ私はそう思わない – Mark

+0

それは間違っていた、私は編集を追加しました – Mark