纯 C#实现+AOT 打造的多功能图片处理工具 ImageGlider
纯C#+AOT打造的ImageGlider,图像处理功能堆得像山,还非得标榜零依赖?ImageSharp封装得倒是挺顺溜,就是不知道这模块化架构能走多远。Web API和CLI工具有点东西,但别指望我夸太离谱。
目录9 个章节
前言
上次我用 C# + AOT 开发了一个 ICO 图标生成工具
这个实用小工具一经发布就受到不少朋友的关注
最近还被做成了网站,有图形化界面来一键生成 ico 图标,更方便普通用户的使用
这种 C# 开发,GitHub Actions 自动化发布 nuget 包和 dotnet tool 的一站式体验非常好,以至于让我对这种感觉有点上瘾了
最近又陆续开发了两个类似的工具,其中一个就是本文要介绍图片处理工具。
项目开源地址,欢迎 Star 和 PR : https://github.com/star-plan/image-glider
关于 ImageGlider
一开始我开发这个工具,只是为了实现把目录中的 jfif 图片批量转换为 Windows 文件管理器能显示缩略图的 jpg 或者 png 格式。
不过在开发过程中,发现 C# 写小工具还真是方便,于是就慢慢增加了一堆功能。
接下来我还打算增加一个相似图片识别功能。
以下是目前的项目介绍:
ImageGlider 是一个功能强大的跨平台图像处理工具套件,使用 C# (.NET 9) 和 ImageSharp 实现。项目采用模块化架构设计,包含核心类库、命令行工具、Web API、示例程序和完整的单元测试,支持 AOT 编译以获得原生性能。
通过 ImageGlider,可以轻松进行图像处理操作,完全摆脱外部依赖,无需 ImageMagick、Node.js 或 Python,适合在 .NET 项目中内嵌、分发或集成自动化流程中使用。
目标是打造一个跨平台、零依赖、高性能、全功能的图像处理解决方案!(可以理解为简化操作版本的 ImageMagick)
项目地址: https://github.com/star-plan/image-glider
功能特点
🎯 核心图像处理功能
- 🖼️ 格式转换:支持 JPEG、PNG、GIF、BMP、TIFF、WebP 等多种图像格式的相互转换
- 📏 尺寸调整:支持拉伸、保持宽高比、裁剪等多种调整模式
- 🗜️ 压缩优化:智能压缩算法,在保持质量的同时减小文件体积
- ✂️ 图像裁剪:精确裁剪指定区域,支持中心裁剪和自定义坐标裁剪
- 🖼️ 缩略图生成:快速生成高质量缩略图,支持多种尺寸模式
- 💧 水印功能:支持文本和图片水印,9种位置选择,可调透明度和缩放
- 🧹 元数据清理:一键清除 EXIF、ICC、XMP 等隐私敏感的元数据信息
- 🎨 颜色调整:调整亮度、对比度、饱和度、色相、伽马值等颜色参数
- ℹ️ 信息提取:获取图像详细信息,支持JSON格式输出
🛠️ 技术特性
- 🚀 跨平台:基于 .NET 9 和 ImageSharp,支持 Windows、Linux、macOS
- ⚡ AOT 编译:支持原生AOT编译,启动速度快,内存占用低
- 📦 零依赖:无需安装额外的图像处理工具或运行时环境
- 🧩 模块化设计:核心功能封装为独立类库,便于集成和扩展
- 🔧 多种接口:提供CLI工具、Web API、核心类库三种使用方式
💻 使用方式
- 命令行工具:16种专业命令,支持单文件和批量处理
- Web API:RESTful接口,支持HTTP文件上传和处理
- 核心类库:直接集成到.NET项目中使用
- 批量处理:自动扫描目录,支持递归处理和文件过滤
- 详细日志:完整的日志记录,支持多种日志级别
- 错误处理:完善的异常处理机制,提供详细的处理结果信息
使用方法
作为 .NET Global Tool 安装(推荐)
dotnet tool install --global ImageGlider.Cli
安装完成之后就可以通过命令行使用了
$ imageglider
=== ImageGlider 命令行工具 ===
用法:
ImageGlider.Cli <命令> [选项]
ImageGlider.Cli help [命令] 显示帮助信息
可用命令:
adjust 调整单个图片文件的颜色(亮度、对比度、饱和度、色相、伽马值)
batch-adjust 批量调整指定目录下图片文件的颜色(亮度、对比度、饱和度、色相、伽马值)
batch-compress 批量压缩优化图片文件
batch-convert 批量转换图片文件
batch-crop 批量裁剪指定目录下的图片文件
batch-info 批量查看目录下图片文件的详细信息
batch-resize 批量调整图片文件尺寸
batch-strip-metadata 批量清理指定目录下图片文件的元数据
batch-thumbnail 批量生成指定目录下图片文件的缩略图
batch-watermark 批量为图片文件添加水印
compress 压缩优化单个图片文件
convert 转换单个图片文件
crop 裁剪单个图片文件
info 查看图片文件的详细信息
resize 调整单个图片文件尺寸
strip-metadata 清理单个图片文件的元数据
thumbnail 生成单个图片文件的缩略图
watermark 为单个图片文件添加水印
使用 'ImageGlider.Cli help <命令>' 查看特定命令的详细帮助。
示例:
ImageGlider.Cli convert -s image.jfif -t image.jpeg -q 85
ImageGlider.Cli batch-convert -se .jfif -te .jpeg -q 90
ImageGlider.Cli resize -s input.jpg -t output.jpg -w 800 -h 600
ImageGlider.Cli compress -s input.jpg -t output.jpg -l 60
ImageGlider.Cli help convert
AOT 与其他方式
通过其他方式安装(如 scoop、brew)和 AOT 编译发布,本文就不赘述了,请查看 项目文档。
小结
这套开发流程非常舒服,我甚至想把这套流程集成到我的模板项目 FluentConsole 里了
接下来会输出几篇与这套流程有关的文章,感兴趣的同学可以关注一下。
_EOF_
纯 C#实现+AOT 打造的多功能图片处理工具 ImageGlider
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
使用C#和MemoryCache组件实现轮流调用APIKey以提高并发能力
本文介绍了如何利用C#语言中的MemoryCache组件,结合并发编程技巧,实现轮流调用多个API Key以提高系统的并发能力。通过示例代码和详细说明,读者将了解如何有效地管理API Key的调用次数限制,并优化系统性能。
2024-03-09 · C# · 约 1 分钟
开发现代化的.NetCore控制台程序:(4)使用GithubAction自动构建以及发布nuget包
GitHub Action自动构建发布nuget包,省时省力。Secrets管理token,workflow一劳永逸。吐槽nuget推送重复输入token,烦人!
2023-11-13 · C# · 约 1 分钟
C#爬虫开发小结
前言 2023年以来一直很忙,临近春节,各种琐事更多,但鸽了太久没写文章总是不舒坦,忙中偷闲来记录下最近用C#写爬虫的一些笔记。 爬虫一般都是用Python来写,生态丰富,动态语言开发速度快,调试也很方便 但是 我要说但是,动态语言也有其局限性,笔者作为老爬虫带师,几乎各种语言都搞过,现在这个任务并不复杂,用我最喜欢的C#做小菜一碟~ 开始 之前做 OneCat 项目的时候,最开始的数据采集模块,
2023-01-24 · C# · 约 1 分钟
花了不少时间,修复了一个SharpIco生成图标的bug
SharpIco bug修好了?真把自己当回事了,高分辨率图片转ico就崩,这逻辑够清奇。原来是位深度闹的,24转32而已,用点真本事解决?
2025-07-01 · C# · 约 1 分钟
讨论
共 0 条加载评论中…