📜  C# 在 url 上下载图像 - C# (1)

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

C# 在 URL 上下载图像

在 C# 中,我们可以通过 URL 下载图像并将其用于不同的用途,例如显示在应用程序中或保存到本地磁盘。在本篇文章中,我们将介绍如何使用 C# 从 URL 下载图像,并提供相关的代码示例和说明。

1. 使用 WebClient 类下载图像

要下载图像,我们可以使用 C# 内置的 WebClient 类。它提供了许多方便的方法,可以轻松地下载远程文件。

以下是一个简单的示例程序,演示了如何从 URL 下载图像并将其保存到本地磁盘:

using System;
using System.Net;

class Program
{
    static void Main(string[] args)
    {
        using (WebClient client = new WebClient())
        {
            string url = "https://example.com/image.jpg";
            string fileName = "image.jpg";
            client.DownloadFile(url, fileName);
            Console.WriteLine("Image downloaded successfully.");
        }
    }
}

在这个示例中,我们首先创建了一个 WebClient 对象,并指定要下载的 URL 和要保存到的目标文件名。然后,我们调用 DownloadFile 方法,该方法会下载文件并将其保存到本地磁盘。最后,我们打印一条消息,确认图像已成功下载。

提示:请确保你已引用 System.Net 命名空间。

如果你正在开发一个网络应用程序,并想将下载的图像显示在客户端浏览器中,你可以不必存储图像文件,而是使用 Response.OutputStream 立即将图像写入到 HTTP 响应流中。下面是一个示例:

using System;
using System.Net;
using System.Web;

namespace Example
{
    public class ImageHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            string url = "https://example.com/image.jpg";
            using (WebClient client = new WebClient())
            {
                byte[] imageData = client.DownloadData(url);
                context.Response.ContentType = "image/jpeg";
                context.Response.OutputStream.Write(imageData, 0, imageData.Length);
            }
        }

        public bool IsReusable
        {
            get { return false; }
        }
    }
}

在这个示例中,我们首先定义一个 HTTP 处理程序(IHttpHandler),然后覆盖 ProcessRequest 方法以处理 HTTP 请求。在方法中,我们创建了一个 WebClient 对象,并使用 DownloadData 方法下载图像的字节数组。然后,我们设置 HTTP 响应的内容类型,然后立即使用 Response.OutputStream 将字节数组写入到客户端浏览器中。

2. 使用 HttpClient 类下载图像

C# 中的 HttpClient 类是 .NET Framework 4.5 引入的新特性,它提供了一种优雅的方式来向 Web API 发送 HTTP 请求,并获取响应数据。那么,它能否被用于下载图像呢?答案是肯定的!下面是一个示例程序,演示了如何使用 HttpClient 从 URL 下载图像:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string url = "https://example.com/image.jpg";
            string fileName = "image.jpg";
            byte[] imageData = await client.GetByteArrayAsync(url);
            System.IO.File.WriteAllBytes(fileName, imageData);
            Console.WriteLine("Image downloaded successfully.");
        }
    }
}

在这个示例中,我们首先创建了一个 HttpClient 对象,并指定要下载的 URL。然后,我们调用 GetByteArrayAsync 方法,该方法会下载文件并返回其字节数组。我们将这个字节数组写入到本地磁盘上的文件中,然后打印一条消息,确认图像已成功下载。

注意:上面的示例程序需要在等待异步操作完成时使用 C# 7.1+ 版本,或将其打包到异步方法中使用。

结尾

在本篇文章中,我们介绍了如何使用 C# 从 URL 下载图像,并提供了两个方法。不论你需要将图像用于显示还是保存到本地硬盘中,你都可以使用上述代码示例轻松地完成任务。使用 WebClientHttpClient 下载图像是 C# 网络编程的重要基础知识,希望对于初学者有所帮助。