ImageSharp,一個強(qiáng)悍的圖像處理.NET庫!
大家好啊!我今天要給小伙伴們介紹一個超級好用的圖像處理庫 - ImageSharp。作為一個開源的跨平臺圖像處理庫,它完全用純C#編寫,性能非常棒!無論是調(diào)整圖片大小、裁剪、添加水印,還是調(diào)整圖片色彩,都是小菜一碟。 ImageSharp 初體驗 首先,我們需要通過 NuGet 包管理器安裝 ImageSharp: powershell
dotnet add package SixLabors.ImageSharp
基礎(chǔ)圖像操作 來看看最常用的幾個操作吧!
1. 加載和保存圖片
csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
// 加載圖片
using var image = Image.Load("input.jpg");
// 保存圖片
image.Save("output.jpg");
2. 調(diào)整圖片大小
csharp
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using var image = Image.Load("input.jpg");
// 調(diào)整為固定尺寸
image.Mutate(x =>; x.Resize(800, 600));
// 保持縱橫比調(diào)整
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");
// 從坐標(biāo)(100,100)處裁剪300x200的區(qū)域
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");
// 調(diào)整亮度和對比度
image.Mutate(x =>; x
.Brightness(1.1f)
.Contrast(1.1f));
// 轉(zhuǎn)換為黑白圖片
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)));
}
}
注意事項:處理大量圖片時,記得使用異步方法,避免阻塞主線程!
性能優(yōu)化小技巧
- 對于大圖片,考慮使用 MaxDegreeOfParallelism 控制并行度
ImageSharp 還支持很多高級特性:
該文章在 2025/1/24 16:51:41 編輯過