C#开发者的新选择:使用ImageSharp进行图像处理

devtools/2024/9/25 12:40:54/

在.NET生态系统中,ImageSharp是一个功能强大、跨平台的图像处理库,它为开发者提供了丰富的API来处理图像。与传统的System.Drawing不同,ImageSharp不需要依赖Windows GDI+,因此可以在Linux和macOS等非Windows平台上运行。本文将介绍如何使用ImageSharp进行基本的图像处理操作,并通过示例代码展示其用法。

安装ImageSharp

要使用ImageSharp,首先需要将其添加到你的项目中。你可以通过NuGet包管理器来安装它。在你的项目目录中运行以下命令:

dotnet add package SixLabors.ImageSharp

或者,如果你使用的是Visual Studio,可以通过“NuGet包管理器”搜索SixLabors.ImageSharp并进行安装。

基本用法示例

加载和保存图像

以下是一个简单的示例,展示如何加载一个图像文件,然后将其保存为另一个格式:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 保存为PNG格式image.Save("output.png");}}
}

调整图像大小

调整图像大小是常见的图像处理需求。以下代码展示了如何使用ImageSharp来改变图像的尺寸:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 调整大小到指定的宽度和高度image.Mutate(ctx => ctx.Resize(800, 600));// 保存调整大小后的图像image.Save("resized.jpg");}}
}

裁剪图像

裁剪图像是指从原始图像中截取一个矩形区域。以下是如何使用ImageSharp来裁剪图像的示例:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 裁剪图像,指定左上角的坐标和裁剪的宽度、高度image.Mutate(ctx => ctx.Crop(new Rectangle(50, 50, 400, 300)));// 保存裁剪后的图像image.Save("cropped.jpg");}}
}

图像旋转和翻转

ImageSharp还支持旋转和翻转图像。以下是一个旋转图像的示例:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 旋转图像,指定旋转角度(以度为单位)image.Mutate(ctx => ctx.Rotate(45, knownColor: Color.White)); // 可以指定背景色// 保存旋转后的图像image.Save("rotated.jpg");}}
}

要翻转图像,可以使用Flip方法:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 水平翻转图像image.Mutate(ctx => ctx.Flip(FlipMode.Horizontal));// 保存翻转后的图像image.Save("flipped.jpg");}}
}

添加水印

在图像上添加水印是保护图像版权的一种常见方式。以下是如何使用ImageSharp在图像上添加文本水印的示例:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using System.Numerics;class Program
{static void Main(string[] args){// 加载图像using (var image = Image.Load("input.jpg")){// 设置水印文本的选项var textGraphicsOptions = new TextGraphicsOptions{HorizontalAlignment = HorizontalAlignment.Center,VerticalAlignment = VerticalAlignment.Center,WrapTextWidth = image.Width};// 添加水印文本var font = SystemFonts.CreateFont("Arial", 48);image.Mutate(ctx => ctx.DrawText("Watermark", font, Color.White, new PointF(image.Width / 2, image.Height / 2), textGraphicsOptions));// 保存带有水印的图像image.Save("watermarked.jpg");}}
}

结论

ImageSharp是一个功能强大且易于使用的图像处理库,它为.NET开发者提供了丰富的图像处理功能。无论是加载、保存图像,还是进行调整大小、裁剪、旋转、翻转或添加水印等操作,ImageSharp都能轻松胜任。通过本文的示例代码,你可以快速上手并使用ImageSharp来处理你的图像。如果你正在寻找一个跨平台的图像处理解决方案,ImageSharp绝对是一个值得考虑的选择。


http://www.ppmy.cn/devtools/116960.html

相关文章

ProcessOn为什么导出有水印!!!(利用SVG转PNG)

processon-svg2png ProcessOn 一个非常好用的思维导图网站,但是为什么导出有水印!!!。 功能 支持按钮拖拽支持将流程图svg 转成 png下载支持修改自定义文字下载svg(开发中) 安装/使用方法 安装并使用…

【WorldView系列卫星】

WorldView系列卫星 WorldView系列卫星是美国DigitalGlobe公司推出的一系列先进商业遥感卫星,旨在提供高分辨率的地球成像服务。该系列卫星以其卓越的成像能力,如高分辨率、快速重访时间和宽幅扫描能力,引领了地球观测技术的新标准。以下是对…

Android 平台使用VIA创建语音交互应用开发指南

Android 平台使用VIA创建语音交互应用开发指南 要实现语音交互应用(VIA),请按照以下步骤进行: 创建VIA框架。(Option)实现首次设置/登录流程。(Option)实现“设置”界面。在清单文件中声明所需权限。实现语音控制面板界面。实现语音识别(需包含 RecognitionService A…

PostgreSQL运用关键点是什么呢?

PostgreSQL是一种功能强大的开源对象——关系数据库系统,它广泛应用于各种规模的项目中,从小型应用程序到大型企业级应用。以下是关于PostgreSQL如何运用的几个关键点: 1、安装与配置 安装:PostgreSQL可以在多种操作系统上安装&a…

论文复现:考虑电网交互的风电、光伏与电池互补调度运行(MATLAB-Yalmip-Cplex全代码)

论文复现:考虑电网交互的风电、光伏与电池储能互补调度运行(MATLAB-Yalmip-Cplex全代码) 针对风电、光伏与电化学储能电站互补运行的问题,已有大量通过启发式算法寻优的案例,但工程上更注重实用性和普适性。Yalmip工具箱则是一种基于MATLAB平台的优化软件工具箱,被广泛应用…

2024年全新deepfacelive如何对应使用直播伴侣-腾讯会议等第三方软件

# 2024年全新deepfacelive如何对应使用直播伴侣-腾讯会议等第三方软件 前提按照之前的步骤打开deepfacelive正确配置并且在窗口已经输出了换脸后的视频,不懂步骤可以移步 https://doc.youyacao.com/88/2225 ## 首先下载obs并配置 https://obsproject.com/ 通过…

C#控件开发能够阅读的书籍

在C#中开发控件通常涉及到继承自现有控件类,并重写相关方法。以下是一些书籍,它们涵盖了C#控件开发的基础知识和高级主题: Professional C#: Windows Forms Control Development 作者:Christian Nagel 出版社:Wrox 推荐…

论文研读——《Task-Adaptive Negative Envision for Few-Shot Open-Set Recognition》

这是一篇关于少样本开集识别的论文。 目录 论文简介: 名词补充 论文的贡献 负原型生成器 确定动态阈值 共轭训练 补充:元训练过程 共轭训练过程 共轭训练损失 实验设置 总结 论文简介: Task-Adaptive Negative Envision for Few-…