前言
上次我用 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 安装(推荐)
bash
dotnet tool install --global ImageGlider.Cli
安装完成之后就可以通过命令行使用了
bash
$ 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 里了
接下来会输出几篇与这套流程有关的文章,感兴趣的同学可以关注一下。