純 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 安裝(推薦)
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 里了
接下來會輸出幾篇與這套流程有關的文章,感興趣的同學可以關注一下。

浙公網安備 33010602011771號