2011-12-30 23 views
6

我嘗試1000次,轉換成一個簡單的流(HTTP WebResponse類)以BitmapImage的,但沒有一個教程是工作在C#Windows 8的如何將簡單的流(http webresponse)轉換爲c#windows 8中的bitmapimage?

例子:

BitmapImage image = new BitmapImage(); 
image.SetSource(stream); 
image1.Source = image; 

感謝對所有答覆。

解決方案

InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream(); 
DataWriter writer = new DataWriter(randomAccessStream.GetOutputStreamAt(0)); 
writer.WriteBytes((byte[])command); 
await writer.StoreAsync(); 
BitmapImage image = new BitmapImage(); 
image.SetSource(randomAccessStream); 
+0

你一定的流回來帶*只是*原始圖像數據? – ranksrejoined 2011-12-30 09:39:35

+0

是的,但問題是我不知道正確的方法,我可以做到這一點。 – flatronka 2011-12-30 09:47:13

+0

優秀!我很高興你找到了使其工作所需的額外線路! – 2011-12-30 11:50:08

回答

7

你試過嗎?

InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream(); 
DataWriter writer = new DataWriter(randomAccessStream.GetOutputStreamAt(0)); 
writer.WriteBytes(response.Content.ReadAsByteArray()); 
BitmapImage image = new BitmapImage(); 
image.SetSource(randomAccessStream); 
+0

你在哪裏修改randomAccessStream,只是初始化? – flatronka 2011-12-30 10:02:59

+0

的randomacces流保持0 – flatronka 2011-12-30 10:09:06

+0

randomAccessStream {Windows.Storage.Streams.InMemoryRandomAccessStream} Windows.Storage.Streams.InMemoryRandomAccessStream 規格0 ULONG 作家{Windows.Storage.Streams.DataWriter} Windows.Storage.Streams.DataWriter 字節順序大尾端Windows.Storage.Streams.ByteOrder UnicodeEncoding UTF8 Windows.Storage.Streams.UnicodeEncoding UnstoredBufferLength 10134 UINT (字節[]){e.responseObject字節[10134]}字節[] – flatronka 2011-12-30 10:13:24

1

試試這個代碼:

private async Task GetLocalImageAsync(string internetUri, string folderName, 
             string uniqueName) 
{ 
    using (var response = await HttpWebRequest.CreateHttp(internetUri) 
           .GetResponseAsync()) 
    { 
     using (var stream = response.GetResponseStream()) 
     { 
      var folder = await ApplicationData.Current.LocalFolder 
           .CreateFolderAsync(folderName, 
             CreationCollisionOption.OpenIfExists); 
      var file = await folder.CreateFileAsync(
            string.Format("{0}", uniqueName), 
            CreationCollisionOption.ReplaceExisting); 
      using (var filestream = await file.OpenStreamForWriteAsync()) 
      { 
       await stream.CopyToAsync(filestream); 
       await filestream.FlushAsync(); 
      } 
     } 
    } 
} 
相關問題