English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 3|回复: 0

ImageSharp:高性能跨平台.NET开源图形库

[复制链接]
查看: 3|回复: 0

ImageSharp:高性能跨平台.NET开源图形库

[复制链接]
查看: 3|回复: 0

362

主题

0

回帖

1096

积分

金牌会员

积分
1096
diannao

362

主题

0

回帖

1096

积分

金牌会员

积分
1096
2025-2-7 00:31:35 | 显示全部楼层 |阅读模式
在.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.ImageSharp2、调整图像大小
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函数功能
一个C#开源工具库,集成了超过1000个扩展方法
Plotly.NET:一个强大的、漂亮的.NET开源交互式图表库
一个基于.Net的SVG图形开源操作库
OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

362

主题

0

回帖

1096

积分

金牌会员

积分
1096

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-10 15:08 , Processed in 0.764101 second(s), 27 queries .

Powered by 智能设备

©2025

|网站地图