2011-12-30 4 views
6

staram 1000 razy, w celu przekształcenia prostego strumienia (http WebResponse) do BitmapImage, ale nikt poradnik pracuje w C# Windows 8.Jak przekonwertować prosty strumień (http web odpowiedzi) na bitmapimage w oknie C# 8?

Przykład:

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

Dziękuję za wszystkie odpowiedzi.

Rozwiązanie

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

Jesteś pewien strumień wraca z * tylko * dane raw? – ranksrejoined

+0

Tak, ale problemem jest to, że nie znam prawidłowych metod, które mogę zrobić. – flatronka

+0

Doskonale! Cieszę się, że znalazłeś dodatkową linię, która była niezbędna, aby działało! –

Odpowiedz

7

Próbował pan jest?

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

Gdzie modyfikujesz randomAccessStream, po prostu zainicjuj? – flatronka

+0

się randomacces strumień pozostanie 0 – flatronka

+0

randomAccessStream {Windows.Storage.Streams.InMemoryRandomAccessStream} Windows.Storage.Streams.InMemoryRandomAccessStream Rozmiar 0 Ulong pisarz {Windows.Storage.Streams.DataWriter} Windows.Storage.Streams.DataWriter ByteOrder bigEndian Windows.Storage.Streams.ByteOrder UnicodeEncoding UTF-8 Windows.Storage.Streams.UnicodeEncoding UnstoredBufferLength 10134 uint (bajt []) e.responseObject {bajt [10134]} bajt [] – flatronka

1

Spróbuj kod:

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(); 
      } 
     } 
    } 
} 
Powiązane problemy