雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

5个高性能 .NET Core 图片处理库推荐

2024-12-24 3

在使用 .NET Core 开发中,图片处理是一个常见需求,如图像缩放、裁剪、格式转换和添加水印等。以下是一些推荐的 .NET Core 图片处理库,它们功能强大且支持多种图像处理功能:

1. ImageSharp

简介:ImageSharp 是一个纯托管代码编写的跨平台图像处理库,性能优秀,支持多种图像格式。

ImageSharp 支持常见图像格式(JPEG、PNG、GIF、BMP、TIFF等)。提供缩放、裁剪、旋转、滤镜等多种图像处理功能。支持颜色空间转换(如 RGB 到 CMYK)。ImageSharp的高性能适合在生产环境中使用。

安装 ImageSharp :

dotnet add package SixLabors.ImageSharp

ImageSharp 代码示例:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;

var image = Image.Load("input.jpg");
image.Mutate(x => x.Resize(300, 200).Grayscale());
image.Save("output.jpg");

2. Magick.NET

简介:Magick.NET 是基于 ImageMagick 的 .NET 封装,提供强大的图像处理能力。

Magick.NET 支持超过 100 种图像格式,提供高级的图像合成和滤镜功能,适合处理复杂的图像任务,如 PDF 转换、OCR 前处理等。

安装 Magick.NET:

dotnet add package Magick.NET-Q8-AnyCPU

Magick.NET 代码示例:

using ImageMagick;

using (var image = new MagickImage("input.png"))
{
    image.Resize(300, 200);
    image.Write("output.png");
}

3. SkiaSharp

简介:SkiaSharp 是 Google 的 Skia 图形引擎的 .NET 封装,适合用于 2D 图形绘制和图像处理。

SkiaSharp 支持高性能图像处理与绘图,支持复杂的图像效果,如模糊、阴影、渐变等。SkiaSharp 也提供对矢量绘图的支持。

安装 SkiaSharp:

dotnet add package SkiaSharp

SkiaSharp 示例代码:

using SkiaSharp;

using (var bitmap = SKBitmap.Decode("input.jpg"))
using (var canvas = new SKCanvas(bitmap))
{
    canvas.DrawRect(new SKRect(10, 10, 100, 100), new SKPaint { Color = SKColors.Red });
    using var output = new SKFileWStream("output.jpg");
    bitmap.Encode(output, SKEncodedImageFormat.Jpeg, 90);
}

4. System.Drawing.Common

简介:System.Drawing.Common 是 .NET Core 的内置图像处理库,适合简单的图像操作。

System.Drawing.Common 支持基本的图像处理功能,如缩放、裁剪、添加文本等,它易于使用,但性能和功能较为有限。

安装 System.Drawing.Common:

dotnet add package System.Drawing.Common

System.Drawing.Common 代码示例:

using System.Drawing;

using (var bitmap = new Bitmap("input.jpg"))
{
    var resized = new Bitmap(bitmap, new Size(300, 200));
    resized.Save("output.jpg");
}

5. FreeImage.NET

简介:FreeImage.NET 是 FreeImage 的 .NET 封装,适用于需要处理多种图像格式的场景。

FreeImage.NET 支持格式繁多,包括 HDR 图像。提供基础图像处理功能,如调整大小、旋转和颜色校正。FreeImage.NET 并未直接通过 NuGet 提供,需要手动下载 FreeImage 的二进制文件,并将其包含在项目中。

https://freeimage.sourceforge.io/download.html

对比总结

根据需求选择合适的库:

如果需要简单处理,System.Drawing.Common 足够。 如果需要跨平台和高性能,ImageSharp 和 SkiaSharp 是优选。 如果需要复杂功能和广泛格式支持,选择 Magick.NET 或 FreeImage.NET。 更新于:15小时前
赞一波!2

文章评论

评论问答