首页 > 编程语言 >C#开发者的新选择:使用ImageSharp进行图像处理

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

时间:2024-09-25 10:53:19浏览次数:9  
标签:C# image jpg 开发者 图像 using SixLabors ImageSharp


在.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绝对是一个值得考虑的选择。

标签:C#,image,jpg,开发者,图像,using,SixLabors,ImageSharp
From: https://blog.51cto.com/u_16903194/12107659

相关文章

  • webpack 多个css文件合并成一个
    在Webpack中,将多个CSS文件合并成一个文件通常涉及到使用MiniCssExtractPlugin插件。以下是如何配置Webpack以实现这一目标的步骤:安装必要的插件:首先,你需要安装mini-css-extract-plugin,它用于将CSS提取到单独的文件中。npminstall--save-devmini-css-extract-plugin......
  • 【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352676.html?templateId=1718516问题现象某些三方件,例如工作流引擎activiti,暂未适配yashandb,使用中会出现如下异常:问题的风险及影响影响客户业务无法进行。问题影响的版本所有的yashandbjdbc驱动版本。问题......
  • 828华为云征文 | 华为云X实例部署Docker应用的性能评测优化与实践指南
    目录1.前言2.测试环境设置2.1硬件与软件配置2.2网络环境与带宽2.3测试应用介绍3.Docker及应用的安装部署步骤3.1安装Docker3.2使用Docker部署Elasticsearch3.3使用Docker部署MySQL3.4使用Docker部署Nginx4.性能测试与评测标准4.1资源占用分析4.2网......
  • 远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件
    很多小伙伴都会在工作中使用code-server,比如说远程办公,当你需要在家访问你的工作环境,亦或者是你们公司的Docker是放入服务器中。code-server无疑是最好的选择,它可以让你通过互联网安全地连接到远程服务器上的开发环境并且使用VSCode。这也符合code-server的初衷——能够在任何机......
  • 亚诺德经典低失真差分ADC驱动器芯片——AD8138
    博主首拆华为三折叠MateXT:内部设计完胜iPhone16,零部件多是国产光刻机的“前世今生”推荐文章:本期是平台君和您分享的第78期内容NEWS新闻早知道今年的巴黎奥运会结束了,不仅是中国人,连无数外国人都情不自禁怀念起16年前的北京奥运会开幕式。在2008年,智能手机还没......
  • 整块代码生成、智能括号匹配……CodeGeeX编程提效,功能再升级!
    CodeGeeX插件功能持续打磨,希望成为开发者更高效的智能编程工具,提高开发速度和代码质量。今天介绍VSCode中最新的v2.4.0版本插件新功能,让你在编写代码时更加得心应手。一、新增block代码块生成的设置CodeGeeX插件中,以往针对代码生成的行数,只有Automatic和Linebyline两种模式。在使......
  • 【深度学习基础模型】径向基函数网络(Radial Basis Function Networks, RBFN)详细理解并
    【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)文章目录【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)1.算法原理介绍:径向基函数网络(R......
  • 在WordPress中使用Simple Custom CSS and JS插件美化页面
    目录一、插件安装二、添加代码三、使用案例1、图片居中2、段落前空两格3、添加版权声明四、代码编写简述WordPress是目前使用最广泛的开源建站框架,其主要功能就是“主题”(Theme)系统,该功能可以让用户自定义主题,也可以直接选择第三方个人或公司开发的主题。不过自定......
  • 【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应用是怎么样
    【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应用是怎么样的呢?【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应用是怎么样的呢?文章目录【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应......
  • mac安装allure成功后pycharm虚拟环境allure不可用
    mac安装allure成功pycharm虚拟环境cmd提示zsh:commandnotfound:alluremac查看安装成功在虚拟环境查看失败确认虚拟环境变量如果Allure仍然不可用,检查虚拟环境中的PATH环境变量是否包含了AllureCLI的路径。在虚拟环境中,你可以运行以下命令来查看PATH:echo$PATH......