【C#】SixLabors.ImageSharp和System.Drawing两者知多少

微软技术分享
优质创作者: 编程框架技术领域
领域专家: 操作系统技术领域
2024-03-03 08:21:45

目录

前言

最近升级改造图片功能,发现提示Image只在windows上支持。 这也就是意味着,如何还继续使用System.Drawing下的Image对象,把Core部署到linux系统是会有报错的。 因此,本篇文章就来了解下这两者的基本信息和使用。

图形处理库

常见库

1.SixLabors.ImageSharp: 这是一个跨平台的图形处理库,提供了丰富的图像操作功能,包括缩放、裁剪、旋转、滤镜、颜色调整等。

2.System.Drawing 这是 .NET Framework 提供的图形处理库,在 Windows 平台上有广泛的支持。它包含大量的图像操作类和方法,如 Image、Bitmap、Graphics 等。

3.SkiaSharp 这是一个用于各种平台的高性能2D图形库,适用于移动应用、游戏和 UI 开发。它提供了丰富的图像处理功能和绘图 API,可以在多个平台上运行。

4.Magick.NET 这是基于 ImageMagick 的 .NET 封装库,ImageMagick 是一个功能强大的开源图像处理库。Magick.NET 提供了丰富的图像处理功能,包括格式转换、调整大小、滤镜、特效等。

以上仅是一些常见的图形处理库,还有其他一些库可供选择,取决于具体需求和平台。

自带库

在 .NET Framework框架中,自带的图形处理库是System.Drawing,为什么在.net core中没有呢?

在 .NET Core 中,没有与 .NET Framework 中的 System.Drawing 直接对应的自带图形处理库。 由于 .NET Core 的跨平台性质和面向云原生应用的定位,微软选择没有将 System.Drawing 直接包含在 .NET Core 中。 不过,可以通过使用第三方图形处理库来进行图形操作。 其中最常用的是 SixLabors.ImageSharp,它是一个专门为 .NET Core 和 .NET Standard 开发的跨平台图形处理库,非常适合在 .NET Core 项目中进行图像处理。

创建图片

使用各个库创建一个尺寸为 200x200 的蓝色图片,并将其保存为 “image_output.png” 文件

SixLabors

引用版本,SixLabors.ImageSharp 3.1.2 下面是 SixLabors.ImageSharp 创建图片并输出的代码

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

namespace Core6TestResouce
{
    public class ImageTest
    {
        public void CreateImageWithImageSharp()
        {
            using (var image = new Image<Rgba32>(200, 200))
            {
                image.Mutate(ctx => ctx.BackgroundColor(Color.Blue));
                image.Save("image_output.png"); // 保存图片
            }
        }

        //
    }
}

https://img-blog.csdnimg.cn/direct/ca4ad159d1e34b5e9095dae1960a34d8.png

Drawing

下面是 System.Drawing 创建图片并输出的代码

using System.Drawing;

public void CreateImageWithSystemDrawing()
{
    using (var image = new Bitmap(200, 200))
    using (var graphics = Graphics.FromImage(image))
    {
        graphics.Clear(Color.Blue); // 设置图片为蓝色

        image.Save("image_output.png"); // 保存图片
    }
}

SkiaSharp

下面是 SkiaSharp 创建图片并输出的代码

using SkiaSharp;

public void CreateImageWithSkiaSharp()
{
    using (var bitmap = new SKBitmap(200, 200))
    using (var canvas = new SKCanvas(bitmap))
    {
        canvas.Clear(SKColors.Blue); // 设置图片为蓝色

        using (var image = SKImage.FromBitmap(bitmap))
        using (var data = image.Encode(SKImageEncodeFormat.Png, 100))
        using (var stream = System.IO.File.Create("image_output.png"))
        {
            data.SaveTo(stream); // 保存图片
        }
    }
}

Magick

下面是 Magick.NET 创建图片并输出的代码

using ImageMagick;

public void CreateImageWithMagickNET()
{
    using (var image = new MagickImage(new MagickColor("blue"), 200, 200))
    {
        image.Write("image_output.png"); // 保存图片
    }
}

相关文章

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇 【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇 【C#】约瑟夫原理举例2个代码实现 【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推 【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。


文章来源: https://blog.csdn.net/lmy_520/article/details/136204443
版权声明: 本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。


...全文
773 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网中功率的智能调控与经济机组组合调度问题。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文中提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景中。

6,833

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 微软技术分享
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧