什么是 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
其中,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,开发者可以轻松实现图片的压缩、裁剪、调整大小等操作,满足不同的应用需求。