ImageSharp:高性能跨平台.NET开源图形库
在.Net中,System.Drawing有平台限制的问题,如果需要跨平台就需要使用第三方库。
今天推荐一个.NET开源图形库,不依赖任何库,支持跨平台的图形库。
01 项目简介
ImageSharp是一款完全托管的代码库,高性能、跨平台的图形库。它支持在任何支持.NET 6+的环境中安装和使用,可以运用在各种场景:设备端,云端以及嵌入式和物联网等。
ImageSharp功能非常丰富,使用简单,常见的操作只需几行代码就可以完成。它支持jpeg、bmp、gif、pbm、png、tga、tiff、webp和qoi等多种图像格式。
同时ImageSharp支持超过25种不同的像素格式,并支持对元数据编辑(如IPTC EXIF、XMP)和色彩空间转换(如RGB、CMYK、灰度、CIELab等)功能。
此外,它还提供了超过40种常见的图像处理操作,性能出色且内存友好,能够处理任何尺寸的图像,包括数百万像素的大图。
02 使用方法
1、安装依赖库
Install-Package SixLabors.ImageSharp
2、调整图像大小
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
// 加载图像
using (var image = Image.Load<Rgba32>("demo.jpg"))
{
// 调整图像大小
image.Mutate(x => x.Resize(100, 100));
// 保存调整大小后的图像
image.SaveAsJpeg("resized_image.jpg");
}
3、应用滤镜(例如灰度效果)
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
// 加载图像
using (var image = Image.Load<Rgba32>("demo.jpg"))
{
// 应用灰度滤镜
image.Mutate(x => x.Grayscale());
// 保存应用滤镜后的图像
image.SaveAsJpeg("grayscale_image.jpg");
}
4、裁剪图像
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
// 加载图像
using (var image = Image.Load<Rgba32>("demo.jpg"))
{
// 裁剪图像
var rectangle = new Rectangle(100, 100, 200, 200); // x, y, width, height
image.Mutate(x => x.Crop(rectangle));
// 保存裁剪后的图像
image.SaveAsJpeg("cropped_image.jpg");
}
5、旋转图像
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
// 加载图像
using (var image = Image.Load<Rgba32>("demo.jpg"))
{
// 旋转图像 90 度
image.Mutate(x => x.Rotate(90));
// 保存旋转后的图像
image.SaveAsJpeg("rotated_image.jpg");
}
6、绘制文字图形
using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using System.Numerics;
// 加载字体文件
var fontCollection = new FontCollection();
fontCollection.Add("C:\\Windows\\Fonts\\STZHONGS.TTF"); // 替换为您的字体文件路径
var fontFamily = fontCollection.Get("STZhongsong"); // 替换为字体名称
var font = fontFamily.CreateFont(size: 20); // 设置字体大小
// 创建一个新的空白图像
var image = new Image<Rgba32>(100, 100);
// 设置背景色为白色
image.Mutate(x => x.Fill(Color.White));
// 使用ImageSharp的Drawing库来绘制文本
image.Mutate(ctx => ctx
.DrawText(
"7788", // 要绘制的文本
font, // 使用的字体
Color.Black, // 文本颜色
new Vector2(10, 10)) // 文本开始绘制的位置
);
// 保存图像
image.SaveAsPng("image_with_text.png", new PngEncoder());
03 项目地址
https://github.com/SixLabors/ImageSharp
更多开源项目: https://github.com/bianchenglequ/NetCodeTop
- End -
推荐阅读
Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能
Plotly.NET:一个强大的、漂亮的.NET开源交互式图表库
ImageSharp:高性能跨平台.NET开源图形库的更多相关文章
- 开源图形库 c语言-图形图像库 集合[转]
开源图形库 c语言-图形图像库 集合[转] Google三维API O3D O3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准. ...
- 介绍一个非常好用的跨平台C++开源框架:openFrameworks
介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...
- 跨平台C++开源代码的两种常用编译方式
作者:朱金灿 来源:http://blog.csdn.net/clever101 跨平台C++开源代码为适应各种编译器的编译,采用了两种方式方面来适配.一种是makefile方式.以著名的空间数据格式 ...
- 跨平台C++开源码的两种经常使用编译方式
作者:朱金灿 来源:http://blog.csdn.net/clever101 跨平台C++开源代码为适应各种编译器的编译,採用了两种方式方面来适配.一种是makefile方式.以著名的空间数据格式 ...
- 一个高性能跨平台基于Python的Waitress WSGI Server的介绍!
对于Python来说,它有很多web框架,常见的有jango.Flask.Tornado .sanic等,比如Odoo.Superset都基于Flask框架进行开发的开源平台,具有强大的功能.在Lin ...
- 可跨平台C++开源图形图像框架:openFrameworks
博客参考:https://www.hahack.com/codes/openframeworks-intro/#%E4%BB%80%E4%B9%88%E6%98%AF-openframeworks 和 ...
- 分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)
在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如: 1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?Socket是用长连接还是短连接?TCP还 ...
- 关于国产跨平台的开源游戏引擎LGame
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5932cde42f1f03de29b1 本文来源: 微信客户端开发团队 ...
- Google的跨平台开发高质量原生 UI 的移动 SDK---Flutter免费且开源
Flutter开发 https://www.cnblogs.com/zengfp/p/9927860.html Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台 ...
随机推荐
- css动画(仿微信聊天页面)
微信聊天框以其简洁直观的界面和流畅的交互体验而广受欢迎.本文将展示如何利用HTML和CSS技术,在自己的网页上实现类似微信的聊天框效果.我们将一步步指导您完成,让网站或应用也能拥有专业且用户友好的聊天 ...
- QT Creator项目路径设置
1.一些中间文件的生成路径的设置 MOC_DIR = temp/moc RCC_DIR = temp/rcc UI_DIR = temp/ui OBJECTS_DIR = temp/obj 这样设置之 ...
- 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十
一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...
- Java 10大优点—Part4—Java内存模型
本文由 ImportNew - 靳禹 翻译自 zeroturnaround.如需转载本文,请先参见文章末尾处的转载要求. 在忙着参加在爱沙尼亚进行的 TEDx talk 演讲活动以及在比利时举办的一届 ...
- k8s之Helm
官方文档: https://helm.sh/zh/docs/intro/using_helm/ Helm 帮助您管理 Kubernetes 应用-- Helm Chart,Helm 是查找.分享和使用 ...
- 浏览器实时查看日志系统-log.io
log.io 是一个实时日志监控工具,采用 node.js + socket.io 开发,使用浏览器访问,每秒可以处理超过5000条日志变动消息.有一点要指出来的是 log.io 只监视日志变动并不存 ...
- 抓包工具之Charles(mac)
下载地址:https://www.charlesproxy.com/download/ 因为软件是收费的,所以破解方式可以参考:https://www.zzzmode.com/mytools/char ...
- SharpZipLib打.tar.gz压缩包
.tar.gz是linux上常见的压缩格式,linux默认支持这种压缩格式,所以我们经常见到在linux系统上的.tar.gz包. 这里我们说一下怎么用SharpZipLib来打一个.tar.gz的压 ...
- 20号CSS学习
前面部分笔记丢失(呜呜有机会补) 一.盒子模型 1.4表格的细线边框 border-collapse: collapse;表示相邻边框合并在一起. 1.5边框会影响盒子的实际大小 测量时不测边框. 1 ...
- 【Amadeus原创】免费的FTP软件Filezilla终极使用方法
FTP是两台异地终端传输大文件的利器. 最火也是最好用的FTP软件,当属FileZilla. 使用方法: 一.安装FileZilla 服务器端安装server版,客户端安装正常版, 下载地址:http ...