📜  System.Drawing 从 url 获取 - C# (1)

📅  最后修改于: 2023-12-03 15:20:26.619000             🧑  作者: Mango

System.Drawing 从 URL 获取 - C#

在C#中,我们经常需要从URL获取图像并将其加载到应用程序中。通常情况下,我们可以使用System.Net.WebClient类来下载图像并将其保存到本地文件系统上,然后使用System.Drawing命名空间中的类来读取本地文件。

但有时并不需要下载文件并将其保存到本地,而是直接从URL获取图像并在内存中处理和显示。在这种情况下,我们可以使用System.Net.WebRequest类和System.Drawing命名空间的类从URL获取图像。

步骤

以下是从URL获取图像的两种不同方法:

方法1: 使用WebClient下载并使用Image.FromFile加载
using System.Net;
using System.Drawing;

// 从URL获取并加载图像
using (WebClient client = new WebClient())
{
    using (Stream stream = client.OpenRead("https://example.com/image.jpg"))
    {
        Image image = Image.FromStream(stream);

        // 在这里使用图像
    }
}

这个方法使用System.Net.WebClient下载图像并将其保存到System.Drawing.Image对象中。我们打开一个URL指向的文件流并使用Image.FromStream方法在内存中加载图像。

此方法具有将远程图像下载到本地磁盘的缺点。但是,下载并存储图像的好处是图像可以缓存,并且在未来的请求中可以使用本地缓存的图像版本。

方法2: 使用WebRequest直接读取并使用Image.FromStream加载
using System.Net;
using System.Drawing;

// 从URL获取并加载图像
WebRequest request = WebRequest.Create("https://example.com/image.jpg");
using (WebResponse response = request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        Image image = Image.FromStream(stream);

        // 在这里使用图像
    }
}

这个方法不需要下载并保存图像,而是直接从URL获取文件流。我们打开一个URL的文件流并使用Image.FromStream方法在内存中加载图像。

这种方法可以减少磁盘空间的使用,并且对于只需要使用一次的图像特别有用。但是,由于我们每次都要从URL获取图像,因此必须牢记,这会导致网络流量增加。

结论

以上是两种从URL获取图像并在C#中加载图像的方法。我们可以使用System.Net.WebClientSystem.Drawing命名空间中的Image类或System.Net.WebRequestSystem.Drawing命名空间中的Image类来完成这项任务。要注意的是,第一种方法具有将远程图像下载到本地磁盘的缺点,而第二种方法可以减少磁盘空间的使用,但每次都需要从URL获取图像。