从URL同步下载图像

Kar*_*lta 6 url wpf download bitmapimage

我想做一件简单的事,但我不能......

我只是想从一个互联网URL获取一个BitmapImage,但我的功能似乎不能正常工作,它只返回我的一小部分图像.我知道WebResponse正在异步工作,这就是我遇到这个问题的原因,但我怎么能同步呢?

这是我的功能:

    internal static BitmapImage GetImageFromUrl(string url)
    {
        Uri urlUri = new Uri(url);
        WebRequest webRequest = WebRequest.CreateDefault(urlUri);
        webRequest.ContentType = "image/jpeg";
        WebResponse webResponse = webRequest.GetResponse();

        BitmapImage image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = webResponse.GetResponseStream();
        image.EndInit();

        return image;
    }
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助.

tre*_*chf 10

首先,您应该只下载图像,并将其本地存储在临时文件或文件中MemoryStream.然后BitmapImage从中创建对象.

您可以下载图像,例如:

Uri urlUri = new Uri(url); 
var request = WebRequest.CreateDefault(urlUri);

byte[] buffer = new byte[4096];

using (var target = new FileStream(targetFileName, FileMode.Create, FileAccess.Write))
{
    using (var response = request.GetResponse())
    {    
        using (var stream = response.GetResponseStream())
        {
            int read;

            while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                target.Write(buffer, 0, read);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)