ImageSharp,一個(gè)強(qiáng)悍的圖像處理.NET庫(kù)!
大家好啊!我今天要給小伙伴們介紹一個(gè)超級(jí)好用的圖像處理庫(kù) - ImageSharp。作為一個(gè)開(kāi)源的跨平臺(tái)圖像處理庫(kù),它完全用純C#編寫(xiě),性能非常棒!無(wú)論是調(diào)整圖片大小、裁剪、添加水印,還是調(diào)整圖片色彩,都是小菜一碟。 ImageSharp 初體驗(yàn) 首先,我們需要通過(guò) NuGet 包管理器安裝 ImageSharp: powershell
dotnet add package SixLabors.ImageSharp
基礎(chǔ)圖像操作 來(lái)看看最常用的幾個(gè)操作吧!
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 可以保證圖片不會(huì)被拉伸變形哦!
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)));
高級(jí)圖像處理
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)整亮度和對(duì)比度
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)));
}
}
注意事項(xiàng):處理大量圖片時(shí),記得使用異步方法,避免阻塞主線程!
性能優(yōu)化小技巧
- 使用 using 語(yǔ)句確保資源及時(shí)釋放
- 對(duì)于大圖片,考慮使用 MaxDegreeOfParallelism 控制并行度
ImageSharp 還支持很多高級(jí)特性:
該文章在 2025/1/24 16:51:41 編輯過(guò)