如何在c#windows 8中将简单流(http webresponse)转换为位图图像?

如何在c#windows 8中将简单流(http webresponse)转换为位图图像?,c#,windows-8,microsoft-metro,C#,Windows 8,Microsoft Metro,我尝试了1000次,将一个简单的流(http webresponse)转换为bitmapimage,但是没有一个教程可以在c#windows 8中使用 例如: BitmapImage image = new BitmapImage(); image.SetSource(stream); image1.Source = image; 谢谢你的回复 解决方案 InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAcc

我尝试了1000次,将一个简单的流(http webresponse)转换为bitmapimage,但是没有一个教程可以在c#windows 8中使用

例如:

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);
你试过这个吗

InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
DataWriter writer = new DataWriter(randomAccessStream.GetOutputStreamAt(0));
writer.WriteBytes(response.Content.ReadAsByteArray());
BitmapImage image = new BitmapImage();
image.SetSource(randomAccessStream);
请尝试以下代码:

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();
            }
        }
    }
}

你确定流只返回原始图像数据吗?是的,但问题是我不知道正确的方法,我可以这样做。太好了!我很高兴你找到了使它工作所需的额外线路!在修改randomAccessStream的地方,只需初始化?randomAccessStream仍然是0 randomAccessStream{Windows.Storage.Streams.InMemoryRandomAccessStream}Windows.Storage.Streams.InMemoryRandomAccessStream大小0 ulong writer{Windows.Storage.Streams.DataWriter}Windows.Storage.Streams.DataWriter字节顺序BigEndian Windows.Storage.Streams.ByteOrder Unicode Utf8 Windows.Storage.Streams.Unicode UnstoredBufferLength 10134 uint(字节[])e.responseObject{byte[10134]}字节[]我看到了。我想在执行此代码之前,必须先收到整个响应。我不知道如何等到收到全部答复。有人有想法吗?image{Windows.UI.Xaml.Media.Imaging.BitmapImage}Windows.UI.Xaml.Media.Imaging.BitmapImage base{Windows.UI.Xaml.Media.Imaging.BitmapImage}Windows.UI.Xaml.Media.Imaging.BitmapSource{Windows.UI.Xaml.Media.Imaging.BitmapImage}CreateOptions延迟创建Windows.UI.Xaml.Media.Imaging.BitmapCreateOptions解码像素高度0整数解码像素宽度0整数URI源空系统