纯 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 里了

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

相关推荐
q__y__L1 小时前
C#线程同步(三)线程安全
安全·性能优化·c#
BuHuaX9 小时前
Unity_数据持久化_IXmlSerializable接口
xml·unity·c#·游戏引擎·游戏策划
格林威10 小时前
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现路口车辆速度的追踪识别(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·计算机视觉·c#·视觉检测
CodeCraft Studio11 小时前
国产化Word处理控件Spire.Doc教程:Python提取Word文档中的文本、图片、表格等
python·c#·word·国产化·spire.doc·word文档处理·文档开发控件
Kookoos11 小时前
ABP VNext + Quartz.NET vs Hangfire:灵活调度与任务管理
c#·.net·hangfire·quartz.net·abp vnext
LZQqqqqo14 小时前
C# 事件Event
开发语言·c#
时光追逐者14 小时前
C#/.NET/.NET Core优秀项目和框架2025年7月简报
c#·.net·.netcore
与火星的孩子对话15 小时前
Unity Shader编程完全入门指南:从零到实战 C# 实战案例
unity·c#·游戏引擎
R-G-B16 小时前
【08】大恒相机SDK C#发开 —— 多相机采集
c#·大恒相机c#发开·大恒多相机采集