wpf - 从 URL 同步下载图像

标签 wpf url 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;
    }

最佳答案

首先,您应该只下载图像,并将其存储在本地临时文件或 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);
            }
        }
    }
}

关于wpf - 从 URL 同步下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659574/

相关文章:

c# - "The invocation of the constructor on type ' TestWPF.MainWindow ' that matches the specified binding constraints threw an exception."- 如何解决这个问题?

url - 从 elasticsearch 查询创建一个 Kibana URL

java - 如何将 cURL 转换为改造正确的形式?

macos - 从 OS X 文件引用 URL 别名获取路径(文件 :///. file/id=...)

http - 什么决定下载的文件应该保存为只读还是读写?

c# - Response.TransmitFile() 的替代品

WPF 访问路径 'C:\Users\...\Documents\My Music' 被拒绝

c# - 任何人都可以在 WPF 中引发任何 RoutedEvent 吗?

c# - 使用两个日期选择器控件来指定开始和结束日期?

javascript - 如何使用 javascript 或 jquery 下载磁盘上特定位置的文件?