【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.mzph.cn/news/708971.shtml

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

相关文章

Spring注解之参数校验

目录 一些常用的字段验证的注解 验证请求体(RequestBody) 验证请求参数(Path Variables 和 Request Parameters) 数据的校验的重要性就不用说了&#xff0c;即使在前端对数据进行校验的情况下&#xff0c;我们还是要对传入后端的数据再进行一遍校验&#xff0c;避免用户绕过…

去中心化时代,品牌如何赢得确定性增长

去中心化时代下&#xff0c;品牌面临众多挑战。在如今复杂的环境下&#xff0c;有很多不确定的因素&#xff0c;流量、资本等等&#xff0c;这些都是品牌发展过程中的不确定因素&#xff0c;越是复杂的环境下&#xff0c;品牌越要保证自己核心优势&#xff0c;找到并放大我们的…

C语言数据结构基础-单链表

1.链表概念 在前面的学习中&#xff0c;我们知道了线性表&#xff0c;其中逻辑结构与物理结构都连续的叫顺序表&#xff0c;那么&#xff1a; 链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 2.链表组…

【软件设计师】多元化多方面了解多媒体技术的内容

&#x1f413; 多媒体技术基本概念 多媒体主要是指文字、声音和图像等多种表达信息的形式和媒体&#xff0c;它强调多媒体信息的综合和集成处理。多媒体技术依赖于计算机的数字化和交互处理能力&#xff0c;它的关键是信息压缩技术和光盘存储技术。 亮度 亮度是光作用于人眼时所…

linux+samba共享文件夹-window可以直接上传服务器数据(只能读取不能写入问题)

项目场景&#xff1a; 因为要上传本地瓦片100gb左右&#xff0c;下载再上传时间太长了&#xff0c;最后想到直接下载在服务器&#xff0c;但是下载瓦片软件没有linux版本&#xff0c;于是想到共享文件夹 问题描述 按照这个大佬文档(linuxsamba配置)一切都还好&#xff0c;查…

springboot 注解属性转换字典

1.注解相关功能实现 定义属性注解 import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.vehicle.manager.core.serializer.DicSerializer;import java.lang.annotation.*;/*** a…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(十一)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

家庭游泳池:阳台上可安装的泳池

游泳池可根据场地大小选择安装在室内或室外&#xff0c;这种的泳池规格尺寸相对来说较大&#xff0c;较适合于大型体育场馆、小区配套、健身房等场所。这款家庭泳池与之前的不太一样&#xff0c;不论是从池体材料还是装饰面层都有着很大的差异。 该家庭泳池规格尺寸比较固定&a…

书籍推荐|《使用 ESP32 开发物联网项目(第二版)》

随着物联网技术的迅猛发展&#xff0c;ESP32 因其强大的功能而备受物联网开发者的青睐。在此背景下&#xff0c;资深物联网专家 Vedat Ozan Oner 撰写的《使用 ESP32 开发物联网项目&#xff08;第二版&#xff09;》&#xff0c;为开发者提供了全面且深入的指南读物。 资深物…

SpringBoot整合rabbitmq-直连队列,没有交换机(一)

说明&#xff1a;本文章只是springboot和rabbitmq的直连整合&#xff0c;只使用队列生产和消费消息&#xff0c;最简单整合&#xff01; 工程图&#xff1a; A.总体pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://…

【精选】Java项目介绍和界面搭建——拼图小游戏 上

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

实施顾问的 IDoc 基础知识

目录 一、前言二、概览三、EDI 标准和 IDOC四、IDOC 术语4.1 IDOC&#xff08;基本&#xff09;类型4.2 IDOC 扩展&#xff08;EXTENSION&#xff09;4.3 IDoc 段4.4 父项 IDoc 段与子项 IDoc 段4.5 入站/出站 IDOC4.6 IDOC方向4.7 合作伙伴4.8 合作伙伴类型4.9 消息类型4.10 流…

在Ubuntu中安装Anaconda和创建虚拟环境(保姆级教学,值得借鉴与信任)

一、下载linux版本的Anaconda 1.方法一&#xff1a;官网下载 https://www.anaconda.com/download#downloads2.方法二&#xff1a;在清华大学开源软件镜像站里下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/最后选择了Anaconda3-2022.10-Linux-x86_64.sh进行下…

【EFK】基于K8S构建EFK+logstash+kafka日志平台

基于K8S构建EFKlogstashkafka日志平台 一、常见日志收集方案1.1、EFK1.2、ELK Stack1.3、ELK filbeat1.4、其他方案 二、EFK组件介绍2.1、Elasticsearch组件2.2、Filebeat组件【1】 Filebeat和beat关系【2】Filebeat是什么【3】Filebeat工作原理【4】传输方案 2.3、Logstash组件…

python 中常用的热门库介绍

阅读本文之前请参阅-----如何系统的自学python Python 是一种非常流行的编程语言&#xff0c;它的一个主要优势是拥有一个庞大的生态系统&#xff0c;其中包括许多强大的库。这些库为各种任务提供了解决方案&#xff0c;从数据分析到机器学习&#xff0c;从网络爬虫到图像处理。…

ArmSoM Rockchip系列产品 通用教程 之 CAN 使用

CAN 使用 1. CAN 简介 CAN (controller Area Network)&#xff1a;控制器局域网络总线&#xff0c;是一种有效支持分布式控制或实时控制的串行通信网络。 目前世界上绝大多数汽车制造厂商都采用CAN总线来实现汽车内部控制系统之间的数据通信。 RK3568/RK3588的CAN驱动文件&a…

推荐一款ssh工具 xshell替代品 electerm

下载地址 electerm&#xff1a; https://electerm.github.io/electerm/ windows版本 产品优势 复制粘贴&#xff0c;可以直接使用ctrlc/v 非常的方便 而且不想xshell 需要账号登陆&#xff0c;有更新弹窗&#xff0c;自身集成了sftp 界面设计更新&#xff0c;比MobaXterm的…

2024年值得关注的5款国产低代码开发平台

最近几年&#xff0c;低代码\无代码\零代码技术和快速开发平台比较热门&#xff0c;全球知名低代码平台厂商有&#xff1a;微软Power Platform、西门子Mendix、OutSystems等。我们国内最近几年也有一些信创国产化低代码平台涌现出来&#xff0c;比如&#xff1a;云程、氚云、轻…

【计算机网络】一些乱七八糟内容

MAC Media Access Control 用于在局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;中实现设备自动接入网络 "载波侦听多路访问"(Carrier Sense Multiple Access) CSMA/CD 是CSMA的升级版本&#xff0c;加入了序列号检测机制。 CSMA/CA 是CSM…

阿里又放大招 EMO:一张照片+音频即可生成会说话唱歌的视频

项目简介 你只需要提供一张你的照片任意的音频文件&#xff0c;就能实现你说任何话或唱任何歌曲的动态视频。同时生成视频的长度和你音频长度相匹配&#xff01;表情非常到位&#xff0c;支持任意语音、任意语速、任意图像。 主要特点和功能 1、音频驱动的人像视频生成&#…