ImageSharp,一个强悍的图像处理.NET库!
|
admin
2025年1月24日 16:51
本文热度 592
|
ImageSharp,一个强悍的图像处理.NET库!
大家好啊!我今天要给小伙伴们介绍一个超级好用的图像处理库 - ImageSharp。作为一个开源的跨平台图像处理库,它完全用纯C#编写,性能非常棒!无论是调整图片大小、裁剪、添加水印,还是调整图片色彩,都是小菜一碟。 ImageSharp 初体验 首先,我们需要通过 NuGet 包管理器安装 ImageSharp: powershell
dotnet add package SixLabors.ImageSharp
基础图像操作 来看看最常用的几个操作吧!
1. 加载和保存图片
csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
// 加载图片
using var image = Image.Load("input.jpg");
// 保存图片
image.Save("output.jpg");
2. 调整图片大小
csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using var image = Image.Load("input.jpg");
// 调整为固定尺寸
image.Mutate(x =>; x.Resize(800, 600));
// 保持纵横比调整
image.Mutate(x =>; x.Resize(new ResizeOptions
{
Size = new Size(800, 600),
Mode = ResizeMode.Max
}));
小贴士:ResizeMode.Max 可以保证图片不会被拉伸变形哦!
3. 图片裁剪
csharp
using var image = Image.Load("input.jpg");
// 从坐标(100,100)处裁剪300x200的区域
image.Mutate(x =>; x.Crop(new Rectangle(100, 100, 300, 200)));
高级图像处理
1. 添加水印
csharp
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
// 加载字体
var font = SystemFonts.CreateFont("Arial", 36);
using var image = Image.Load("input.jpg");
image.Mutate(x =>; x.DrawText("我的水印", font, Color.White, new PointF(50, 50)));
2. 图片滤镜效果
csharp
using var image = Image.Load("input.jpg");
// 调整亮度和对比度
image.Mutate(x =>; x
.Brightness(1.1f)
.Contrast(1.1f));
// 转换为黑白图片
image.Mutate(x =>; x.Grayscale());
批量处理图片 csharp
async Task ProcessImagesAsync(string inputDir, string outputDir)
{
var files = Directory.GetFiles(inputDir, "*.jpg");
foreach (var file in files)
{
using var image = await Image.LoadAsync(file);
image.Mutate(x =>; x
.Resize(800, 600)
.Grayscale());
await image.SaveAsync(Path.Combine(outputDir, Path.GetFileName(file)));
}
}
注意事项:处理大量图片时,记得使用异步方法,避免阻塞主线程!
性能优化小技巧
- 对于大图片,考虑使用 MaxDegreeOfParallelism 控制并行度
ImageSharp 还支持很多高级特性:
该文章在 2025/1/24 16:51:41 编辑过