2011-12-30 21 views
6

tôi cố gắng 1000 lần, để chuyển đổi một dòng đơn giản (http WebResponse) để BitmapImage, nhưng không ai hướng dẫn được làm việc trong C# windows 8.Làm thế nào để chuyển đổi một luồng đơn giản (http webresponse) thành bitmapimage trong C# windows 8?

Ví dụ:

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

Thank cho tất cả các câu trả lời.

Giải pháp

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

Bạn có chắc chắn con suối sẽ trở lại với * chỉ * dữ liệu hình ảnh thô? – ranksrejoined

+0

Có, nhưng vấn đề là tôi không biết các phương pháp chính xác mà tôi có thể làm điều này. – flatronka

+0

Tuyệt vời! Tôi vui vì bạn đã tìm thấy dòng bổ sung cần thiết để làm cho nó hoạt động! –

Trả lời

7

bạn đã thử này?

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

Nơi bạn sửa đổi randomAccessStream, chỉ cần khởi tạo? – flatronka

+0

các randomacces dòng vẫn 0 – flatronka

+0

randomAccessStream {} Windows.Storage.Streams.InMemoryRandomAccessStream Windows.Storage.Streams.InMemoryRandomAccessStream Kích 0 ulong nhà văn {} Windows.Storage.Streams.DataWriter Windows.Storage.Streams.DataWriter ByteOrder BigEndian Windows.Storage.Streams.ByteOrder UnicodeEncoding uTF8 Windows.Storage.Streams.UnicodeEncoding UnstoredBufferLength 10.134 uint (byte []) e.responseObject {byte [10.134]} byte [] – flatronka

1

Hãy thử mã này:

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(); 
      } 
     } 
    } 
} 
Các vấn đề liên quan