返回

使用 Magick.NET 在 .NET C# 中实现高效的图片压缩与裁剪处理

2025-06-05 Magick.NET C# 图片压缩 2649 0

什么是 Magick.NET?

Magick.NET 是 ImageMagick 的 .NET 封装库,允许开发者在 C# 等 .NET 语言中调用 ImageMagick 强大的图像处理功能。它支持多种图像格式(如 JPEG、PNG、GIF、TIFF、WebP 等),并提供了丰富的图像处理功能,包括压缩、裁剪、调整大小、格式转换等。Magick.NET 适用于 Windows、Linux 和 macOS 平台,兼容 .NET Framework、.NET Core 和 .NET 5/6/7/8 等版本。

Magick.NET GitHub地址:https://github.com/dlemstra/Magick.NET

安装 Magick.NET

在你的 .NET 项目中,可以通过 NuGet 包管理器安装 Magick.NET:

dotnet add package Magick.NET-Q16-AnyCPU

使用 Magick.NET 在 .NET C# 中实现高效的图片压缩与裁剪处理

其中,Q16 表示使用 16 位色深,AnyCPU 表示支持任意平台。

图片压缩与裁剪的基本用法

以下是使用 Magick.NET 进行图片压缩与裁剪的基本示例:

using ImageMagick;

string inputPath = "input.jpg";
string outputPath = "output.jpg";

using (var image = new MagickImage(inputPath))
{
    // 设置压缩质量(0-100)
    image.Quality = 85;

    // 调整图像大小,保持宽高比
    image.Resize(1024, 0);

    // 裁剪图像,指定宽度、高度和起始位置
    image.Crop(new MagickGeometry(800, 600, 100, 50));

    // 移除页面偏移信息
    image.RePage();

    // 保存处理后的图像
    image.Write(outputPath);
}

在上述示例中,我们首先加载了一张图片,然后设置压缩质量为 85,调整图像宽度为 1024 像素(高度自动计算以保持比例),接着从位置 (100, 50) 开始裁剪出一个 800x600 的区域,最后保存处理后的图像。

进阶用法:居中裁剪并调整大小

如果需要将图像裁剪为特定尺寸并居中显示,可以使用以下方法:

using ImageMagick;

string inputPath = "input.jpg";
string outputPath = "output.jpg";
int targetWidth = 800;
int targetHeight = 600;

using (var image = new MagickImage(inputPath))
{
    // 调整图像大小,保持宽高比,确保覆盖目标尺寸
    image.Resize(new MagickGeometry($"{targetWidth}x{targetHeight}^"));

    // 设置裁剪位置为中心
    image.Gravity = Gravity.Center;

    // 裁剪图像为目标尺寸
    image.Crop(targetWidth, targetHeight);

    // 移除页面偏移信息
    image.RePage();

    // 保存处理后的图像
    image.Write(outputPath);
}

在这个示例中,^ 符号表示在调整大小时,图像将被缩放以覆盖目标尺寸,可能会超出目标尺寸的某一边。然后,通过设置 Gravity.Center,我们从中心位置裁剪出目标尺寸的图像。

Magick.NET 提供了强大的图像处理功能,适用于各种 .NET 项目。通过合理地使用其 API,开发者可以轻松实现图片的压缩、裁剪、调整大小等操作,满足不同的应用需求。

顶部