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

欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 前言
  • 图形处理库
    • 常见库
    • 自带库
  • 创建图片
    • SixLabors
    • Drawing
    • SkiaSharp
    • Magick
  • 相关文章

前言

最近升级改造图片功能,发现提示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"); // 保存图片}}//}
}

在这里插入图片描述

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#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498718.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac 制作可引导安装器

Mac 使用U盘或移动固态硬盘制作可引导安装器&#xff08;以 Monterey 为例&#xff09; 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分&#xff0c;称为分区。分区也称为容器&#xff0c;不同容器…

uniapp实战:父子组件传参之子组件数量动态变化

需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…

Vue3+springboot实现简单登录demo

Vue3从0搭建脚手架步骤【默认已安装node.js】 前置条件&#xff1a;默认已安装node.js、yarn 第一步&#xff1a;创建项目 选择任意一个空白文件夹如下&#xff1a; cmd进入该文件夹下的命令窗口模式&#xff0c;然后输入指令创建vue项目&#xff1a;vue create my-project …

Python3中真真假假True、False、None等含义详解

在Python中&#xff0c;不仅仅和类C一样的真假类似&#xff0c;比如1代表真&#xff0c;0代表假。Python中的真假有着更加广阔的含义范围&#xff0c;Python会把所有的空数据结构视为假&#xff0c;比如 [] (空列表)、 {} &#xff08;空集合&#xff09;、 &#xff08;空字符…

立誓登峰,龙年必赢 |大势智慧2024年营销动员誓师大会圆满召开

2月27日&#xff0c;大势智慧2024年度营销动员誓师大会成功召开。大势智慧CEO黄先锋、CTO张帆、常务副总裁徐建民、副总裁周济安、营销中心副总经理段鸿、全国各分公司总经理及营销中心全体精英齐聚武汉总部&#xff0c;共同为新一年的市场必赢之战吹响冲锋号角。 凝心聚力 再…

Flutter 数据持久化存储之Hive库

Flutter 数据持久化存储之Hive库 前言正文一、配置项目二、UI① 增加UI② 显示和删除UI 三、使用Hive① 初始化Hive② TypeAdapter自定义对象③ 注册TypeAdapter③ CURD 四、源码 前言 在Flutter中&#xff0c;有多种方式可以进行数据持久化存储。以下是一些常见的方式&#xf…

TOMCAT的安装与基本信息

目录 引言 一、TOMCAT简介 二、TOMCAT安装 &#xff08;一&#xff09;JDK简介 &#xff08;二&#xff09;安装Oracle JDK 1.rpm安装 2.二进制安装 &#xff08;三&#xff09;安装TOMCAT 三、配置文件介绍及核心组件 &#xff08;一&#xff09;配置文件 1.目录文…

Java毕业设计 基于SSM SpringBoot vue购物比价网站

Java毕业设计 基于SSM SpringBoot vue购物比价网站 SSM vue 购物比价网站 功能介绍 首页 图片轮播 商品 商品分类 商品详情 评论 收藏 商品攻略 商品信息 公告栏 在线反馈 登录 注册 个人中心 我的收藏 后台管理 登录 注册商品户 个人中心 修改密码 个人信息 商品户管理 用户…

CCF-A类 IEEE VIS‘24 3月31日截稿!探索可视化技术的无限可能!

会议之眼 快讯 IEEE VIS (IEEE Visualization Conference )即可视化大会将于 2024 年 10月13日 -18日在美国佛罗里达州皮特海滩的信风岛大海滩度假举行&#xff01;圣彼得海滩&#xff0c;以其迷人的日落和和煦的微风&#xff0c;作为激发创造力和促进可视化社区内合作的完美背…

vue构建版本

完整版&#xff1a;同时包含编译器和运行时的版本。 编译器&#xff1a;用来将模板字符串编译成为 JavaScript 渲染函数的代码。 运行时runtime&#xff1a;用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。 UMD&#xff1a;UMD 版本可以…

【2024创业风向标】随身WiFi成财富新宠,格行带你解锁无限商机!

近日&#xff0c;一股“随身WiFi创业潮”悄然兴起&#xff0c;成为不少创业者和投资者关注的焦点。在这个5G时代&#xff0c;网络已成为生活不可或缺的一部分&#xff0c;而格行随身WiFi凭借其便捷、高效的特点&#xff0c;正成为市场新宠。 据了解&#xff0c;格行随身WiFi不仅…

MySQL里的两个“二次”

文章中所有图片均来自网络 一、double write 第一个二次是mysql一个崩溃恢复很重要的特性-重复写入。 doublewrite缓冲区是位于系统表空间中的存储区域&#xff0c;在该区域中&#xff0c;InnoDB会在将页面写入数据文件中的适当位置之前&#xff0c;从InnoDB缓冲池中刷新这些页…