纯 C#实现+AOT 打造的多功能图片处理工具 ImageGlider

前言

上次我用 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 里了

接下来会输出几篇与这套流程有关的文章,感兴趣的同学可以关注一下。

相关推荐
"菠萝"2 小时前
C#知识学习-012(修饰符)
学习·c#
cplmlm8 小时前
WPF+IOC学习记录
c#·wpf
Nita.9 小时前
C# 模式匹配(Pattern Matching)
c#
程序设计实验室9 小时前
重写 StarBlog 的搜索功能和页面,支持权重设置和结果高亮
c#·starblog番外
我是唐青枫10 小时前
从 Skip Take 到 Keyset:C# 分页原理与实践
开发语言·c#·.net
c#上位机13 小时前
wpf之Canvas
c#·wpf
c#上位机13 小时前
wpf之样式
c#·wpf
用户37215742613514 小时前
告别手动复制粘贴:C# 实现 Excel 与 TXT 文本文件高效互转
c#·.net
忧郁的蛋~15 小时前
在.NET标准库中进行数据验证的方法
后端·c#·asp.net·.net·.netcore
用户83562907805115 小时前
C# 转换 Word 文档为图片:解锁文档处理的新维度
后端·c#