编辑
2025-09-29
C#
00

目录

安装ImageSharp
常用方法
加载和保存图像
加载图像
保存图像
调整图像大小
旋转和翻转图像
应用滤镜和效果
常用滤镜
结论

ImageSharp是一个功能强大的跨平台图像处理库,适用于.NET Core和.NET 5/6等现代.NET平台。它支持各种图像格式,并提供了一个丰富的API,允许开发者进行复杂的图像操作。在本篇文章中,我们将介绍ImageSharp的一些常用属性和方法,并通过实例演示它们的使用。

安装ImageSharp

要开始使用ImageSharp,首先需要将其添加到你的项目中。通过NuGet包管理器安装是最简单的方式:

Bash
dotnet add package SixLabors.ImageSharp

image.png

常用方法

  1. 加载和保存图像:
    • Image.Load(): 加载图像文件。
    • Image.Save(): 保存图像到文件。
  2. 调整图像大小:
    • Resize(): 改变图像的尺寸。
  3. 裁剪图像:
    • Crop(): 裁剪图像到指定的矩形区域。
  4. 旋转和翻转图像:
    • Rotate(): 旋转图像一定的角度。
    • Flip(): 水平或垂直翻转图像。
  5. 应用滤镜和效果:
    • Grayscale(): 将图像转换为灰度。
    • GaussianBlur(): 应用高斯模糊效果。
    • Sharpen(): 锐化图像。
  6. 调整亮度、对比度和饱和度:
    • Brightness(): 调整图像的亮度。
    • Contrast(): 调整图像的对比度。
    • Saturate(): 调整图像的饱和度。
  7. 绘制图像和文本:
    • DrawImage(): 在图像上绘制另一幅图像。
    • DrawText(): 在图像上绘制文本。
  8. 像素操作:
    • ProcessPixelRows(): 提供对图像像素行的低级访问。
  9. 图像格式转换:
    • Image.DetectFormat(): 检测图像的格式。
    • Image.Load()Image.SaveAs[Format](): 加载和保存特定格式的图像。
  10. 图像元数据处理:
    • Metadata: 访问和修改图像的元数据。

加载和保存图像

加载图像

使用ImageSharp加载图像非常简单。以下是加载图像的示例代码:

C#
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; using System.Windows.Forms; using Image = SixLabors.ImageSharp.Image; private void btnLoad_Click(object sender, EventArgs e) { // 加载图像 using (Image image = Image.Load("./feGsv0kJ6CEBng3.png")) { // 将ImageSharp的图像转换为System.Drawing的图像 using (MemoryStream memoryStream = new MemoryStream()) { // 保存ImageSharp图像到内存流中 image.SaveAsPng(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); // 将流的位置重置为开始 // 从内存流创建System.Drawing图像 System.Drawing.Image systemDrawingImage = System.Drawing.Image.FromStream(memoryStream); // 绑定到PictureBox pic1.Image = systemDrawingImage; pic1.SizeMode = PictureBoxSizeMode.AutoSize; } } }

image.png

保存图像

加载图像后,可以对其进行修改,并保存到磁盘:

C#
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; using System.Windows.Forms; using Image = SixLabors.ImageSharp.Image; private void btnSave_Click(object sender, EventArgs e) { // 加载图像 using (Image image = Image.Load("./feGsv0kJ6CEBng3.png")) { image.SaveAsPngAsync("./1.png"); } }

调整图像大小

调整图像大小是图像处理中的常见任务。以下是如何使用ImageSharp调整图像大小的示例:

C#
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; using System.Windows.Forms; using Image = SixLabors.ImageSharp.Image; private async void btnMutate_Click(object sender, EventArgs e) { // 加载图像 using (Image image = Image.Load("./feGsv0kJ6CEBng3.png")) { // 调整图像大小 image.Mutate(x => x.Resize(image.Width / 2, image.Height / 2)); // 保存调整后的图像 await image.SaveAsPngAsync("./2.png"); } }

image.png

旋转和翻转图像

ImageSharp也可以轻松地旋转和翻转图像:

C#
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; using System.IO; using System.Windows.Forms; using Image = SixLabors.ImageSharp.Image; private void btnRotate_Click(object sender, EventArgs e) { // 加载图像 using (Image image = Image.Load("./feGsv0kJ6CEBng3.png")) { // 旋转图像90度 image.Mutate(x => x.Rotate(90)); // 翻转图像 image.Mutate(x => x.Flip(FlipMode.Vertical)); // 将ImageSharp的图像转换为System.Drawing的图像 using (MemoryStream memoryStream = new MemoryStream()) { // 保存ImageSharp图像到内存流中 image.SaveAsPng(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); // 将流的位置重置为开始 // 从内存流创建System.Drawing图像 System.Drawing.Image systemDrawingImage = System.Drawing.Image.FromStream(memoryStream); // 绑定到PictureBox pic1.Image = systemDrawingImage; pic1.SizeMode = PictureBoxSizeMode.AutoSize; } } }

image.png

应用滤镜和效果

ImageSharp支持多种滤镜和效果,可以用来改变图像的外观。下面是应用黑白滤镜的例子:

C#
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; using System.IO; using System.Windows.Forms; using Image = SixLabors.ImageSharp.Image; private void btnFilters_Click(object sender, EventArgs e) { // 加载图像 using (Image image = Image.Load("./feGsv0kJ6CEBng3.png")) { // 应用黑白滤镜 image.Mutate(x => x.Grayscale()); // 将ImageSharp的图像转换为System.Drawing的图像 using (MemoryStream memoryStream = new MemoryStream()) { // 保存ImageSharp图像到内存流中 image.SaveAsPng(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); // 将流的位置重置为开始 // 从内存流创建System.Drawing图像 System.Drawing.Image systemDrawingImage = System.Drawing.Image.FromStream(memoryStream); // 绑定到PictureBox pic1.Image = systemDrawingImage; pic1.SizeMode = PictureBoxSizeMode.AutoSize; } } }

常用滤镜

  1. Grayscale (灰度滤镜):
    • Grayscale(): 将图像转换为灰度,移除颜色信息,只保留亮度信息。
  2. BlackWhite (黑白滤镜):
    • BlackWhite(): 将图像转换为严格的黑白两色。
  3. Sepia (棕褐色滤镜):
    • Sepia(): 给图像应用一种棕褐色调,模仿旧照片的风格。
  4. Invert (反转滤镜):
    • Invert(): 反转图像中的所有颜色。
  5. GaussianBlur (高斯模糊滤镜):
    • GaussianBlur(): 对图像应用高斯模糊,可用于创建柔化效果或减少图像噪声。
  6. Sharpen (锐化滤镜):
    • Sharpen(): 增强图像的边缘对比度,使图像看起来更清晰。
  7. Vignette (晕影滤镜):
    • Vignette(): 在图像的边缘添加暗角效果,通常用于吸引观看者的注意力到图像的中心。
  8. Brightness (亮度滤镜):
    • Brightness(): 调整图像的亮度。
  9. Contrast (对比度滤镜):
    • Contrast(): 调整图像的对比度。
  10. Saturate (饱和度滤镜):
    • Saturate(): 调整图像的饱和度。
  11. Hue (色调滤镜):
    • Hue(): 调整图像的色调。
  12. Pixelate (像素化滤镜):
    • Pixelate(): 将图像分割成大块的像素,创建一种像素艺术效果。
  13. OilPaint (油画滤镜):
    • OilPaint(): 模仿油画的笔触效果。
  14. Glow (发光滤镜):
    • Glow(): 在图像周围添加一层柔和的光晕。
  15. BokehBlur (背景虚化滤镜):
    • BokehBlur(): 创建一种模仿摄影中背景虚化(散景)的效果。
  16. DetectEdges (边缘检测滤镜):
    • DetectEdges(): 检测并突出显示图像中的边缘。
  17. Polaroid(色调分离滤镜):
    • Polariod(): 减少图像中颜色的数量,创建一种类似于复古海报的效果。

结论

ImageSharp是一个功能丰富的.NET图像处理库,它提供了许多用于图像加载、保存、调整大小、旋转、翻转以及应用滤镜和效果的方法。以上示例只是ImageSharp能力的一小部分。通过ImageSharp,你可以轻松地在你的.NET应用程序中实现复杂的图像处理任务。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!