📜  .net core 从 url 二进制文件下载图像 - C# (1)

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

.NET Core 从 URL 二进制文件下载图像 - C#

在 C# 中,有时我们需要从一个 URL 下载二进制图像文件并将其转换为图像对象。本文将介绍如何使用 .NET Core 中的 HttpClient 类来实现该功能。

使用 HttpClient 下载二进制文件

首先,我们需要使用 HttpClient 类来下载图像文件。以下是一个简单的代码示例:

using System.Net.Http;

var url = "https://example.com/image.jpg";

using var client = new HttpClient();
var response = await client.GetAsync(url);

if (response.IsSuccessStatusCode)
{
    var stream = await response.Content.ReadAsStreamAsync();
    // 处理二进制流
}

在此代码示例中,我们首先使用 HttpClient 类向指定 URL 发送 GET 请求。如果响应成功,则将响应内容转换为流并进行处理。

将二进制流转换为图像对象

一旦我们获得了图像的二进制流,我们就可以将其转换为图像对象。以下是一个代码示例:

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

var url = "https://example.com/image.jpg";

using var client = new HttpClient();
var response = await client.GetAsync(url);

if (response.IsSuccessStatusCode)
{
    var stream = await response.Content.ReadAsStreamAsync();
    using var ms = new MemoryStream();
    stream.CopyTo(ms);
    var bytes = ms.ToArray();
    using var imageStream = new MemoryStream(bytes);
    var image = Image.FromStream(imageStream);
}

在此代码示例中,我们首先使用 HttpClient 类向指定 URL 发送 GET 请求并获取响应。如果响应成功,则将响应流复制到一个 MemoryStream 中,并将其转换为 byte 数组。然后,我们创建另一个 MemoryStream 并将 byte 数组写入其中。最后,我们使用 System.Drawing 命名空间中的 Image.FromStream 方法将 MemoryStream 转换为图像对象。

结论

通过使用 HttpClient 类和 System.Drawing 命名空间中的 Image 类,我们可以轻松地从 URL 下载二进制图像并将其转换为图像对象。此功能可在 .NET Core 环境中很好地工作,并且非常适合处理图像文件下载任务。