
Imgcli
io.github.swperb由 GitHub 账号 swperb 发布v0.2.0更新于 Oct 24, 2026
Convert, resize, crop, filter & composite images via the imgcli CLI (lightweight, no deps)
概览
封装 imgcli 命令行工具,让助手转换、缩放、裁剪、滤镜和合成本地图片文件。
- 可以做什么
- 在 PNG、JPEG、BMP、TGA、GIF、PPM、QOI 之间转换图片,并可设置质量与格式
- 缩放、裁剪、填充、旋转、翻转和转置图片,支持对整个文件夹批量处理
- 应用灰度、棕褐、亮度、对比度、模糊、锐化、边缘检测等色彩与卷积滤镜
- 用多个输入文件做叠加合成、纯色填充和绘制方框
- 读取图片尺寸信息,并列出可用滤镜及其语法
- 适用场景
- 适合需要为本地图片生成缩略图、做格式转换或简单风格化处理的场景,无需安装完整图像套件。也适合希望每次转换只调用一个快速、无依赖二进制的脚本或智能体流水线。
- 运行要求
- 以本地 stdio 进程在桌面端运行,通过 npm 包 imgcli-mcp 安装。需另行安装 imgcli 二进制(例如用 Homebrew),并放在 PATH 中,或用 IMGCLI_BIN 环境变量指定其路径。无需账号、密钥或网络访问。
安装
在 SourceWeft 中
- 打开 控制台中的 Imgcli,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
imgcli — command-line image conversion & processing in C
[Install on Smithery] [OpenSSF Scorecard] [Flawfinder C security scan]
ImageMagick's power, ffmpeg's syntax, zero dependencies. A tiny C binary that converts, resizes, crops, filters, and composites images — PNG, JPEG, BMP, TGA, GIF, PPM, QOI — driven by an ffmpeg-style filtergraph. No system libraries; compiles anywhere a C11 compiler exists.
⚡ ~8× faster than ImageMagick on common resize/filter ops, in a 232 KB single binary (~470× smaller) — see the benchmarks. A lightweight alternative to ImageMagick
convertorffmpegfor still images.
What it does: format conversion · resize / scale · crop · pad · rotate · flip · brightness / contrast / saturation / gamma / hue · grayscale · sepia · invert · threshold · box & Gaussian blur · sharpen · Sobel edge detect · emboss · custom convolution kernels · alpha-composite overlay · draw boxes · solid fills.
Design: the same paradigm as ffmpeg — decode → normalize to one common frame format (RGBA) → run a comma-separated filtergraph → encode by output extension.
Benchmarks
imgcli vs ImageMagick on an Apple Silicon Mac (single-threaded, warm cache).
Reproduce with make && bench/bench.sh — see bench/RESULTS.md
for the full method and caveats.
ImageMagick is a far broader 16-bit/HDRI toolkit with 200+ formats; imgcli is a lean 8-bit pipeline that wins on speed, size, and startup — the shape that matters when an agent or script spawns one process per task.
Dependencies & formats
The default build is dependency-free — a single binary that links only the
system C library (libc). Decoding/encoding is handled by the bundled,
public-domain stb and
qoi single-header libraries, compiled
directly in. Nothing to apt install, no shared libraries, no version hell.
- Built-in formats — no dependencies: PNG, JPEG, BMP, TGA, GIF, PPM, QOI. Other formats that can be implemented in plain C (e.g. TIFF) will also be built in and keep the binary dependency-free.
- Formats that need external libraries — opt-in only: WebP, AVIF, HEIC, and JPEG XL
cannot be decoded without large external libraries (libwebp, libavif, libheif, libjxl);
there is no public-domain single-header decoder for them and they are not
practical to hand-roll. If imgcli adds these, it will be strictly via opt-in
build flags (e.g.
make WEBP=1) that link those libraries.
The "zero dependencies" claim applies to the default build, and always will — opt-in format libraries are never compiled into it. A build that enables such a flag is, by definition, no longer dependency-free, and that trade-off is stated at the point you opt in.
Why it's structured this way
Codecs come from the public-domain stb
single-header libraries (third_party/). They're bundled, not linked, so the
tool stays portable and self-contained while still reading/writing the formats
the world actually uses — the same trade-off ffmpeg makes by leaning on codec
libraries instead of reinventing them.
Install
Use it as a native agent tool (MCP)
An MCP server wraps imgcli so AI agents can
call convert_image, probe_image, and list_filters directly — see
mcp/.
Usage
Colours accept #rgb, #rrggbb, #rrggbbaa, 0x…, r-g-b[-a], or names
(red, white, transparent, …). No commas, so they're safe inside a graph.
Filters
Geometry — scale=W:H[:nearest|bilinear|bicubic|lanczos] (-1 keeps aspect;
bicubic/lanczos are high-quality separable resamplers that anti-alias on
downscale and stay sharp on upscale — bilinear is the default),
crop=W:H[:X:Y], pad=W:H[:X:Y[:color]], hflip, vflip,
transpose=90|180|270, rotate=DEG[:color] (arbitrary angle, canvas expands).
Colour — grayscale, invert, sepia, solarize, brightness=V, temperature=V,
contrast=V, saturation=V, gamma=V, hue=DEG, threshold=V, opacity=V, tint=color.
Convolution — blur=R (box), gblur=SIGMA (separable Gaussian),
sharpen[=AMOUNT], edge (Sobel), emboss, convolution=K[:DIV:BIAS]
(custom N×N kernel, e.g. convolution=0 -1 0 -1 5 -1 0 -1 0).
Composite / draw — overlay=X:Y[:INDEX] (alpha "over" compositing of
another -i input), fill=color, drawbox=X:Y:W:H:color[:fill|thickness].
Examples
For AI agents & scripting
imgcli is built to be a reliable tool in an automated pipeline: one self-contained binary, no dependencies, deterministic, non-interactive, and machine-readable. See AGENTS.md for a token-economical recipe sheet.
- Deterministic & non-interactive — never prompts; refuses to overwrite
without
-y; one process per conversion. - Structured output —
--jsonfor results,--quietto silence chatter; stable exit codes (0ok,1runtime error,2usage error). - No network, no subprocesses — safe to run on untrusted inputs in a sandbox.
- Probe without converting —
imgcli --json -info -i file.jpg.
Security
imgcli decodes untrusted image files in C, so memory safety is taken seriously. The codebase has been audited against the OWASP Top 10, common C/CWE classes, and ffmpeg's historical vulnerability classes. Highlights:
- Decompression-bomb safe — dimensions are validated from the header before pixels are decoded; hard caps on size (16384 px/axis, 64 Mpx).
- Integer-overflow-safe allocation through a single capped choke point.
- No protocols/URLs/subprocesses — ffmpeg's worst class (SSRF / file-read via HLS playlists) is structurally impossible here.
- Hardened build (
_FORTIFY_SOURCE, stack protector, PIE/RELRO, format warnings), ASan/UBSan (make asan), and a fuzz harness (make fuzz).
Full threat model, OWASP/CWE mapping, ffmpeg-CVE-class analysis, and dependency policy: SECURITY.md.
Layout
Contributing
Contributor setup, validation targets, filter-registry guidance, and PR expectations live in CONTRIBUTING.md.
Have a question or idea? Use Discussions. For bugs and feature/format requests, open an issue — the templates will guide you.
Support
If imgcli is useful to you, consider sponsoring its development — it funds new formats, security hardening, and maintenance. See SPONSORS.md.
License
The imgcli source is yours to use freely (MIT). The vendored stb
headers are public domain (or MIT, at your option) and the vendored qoi.h is
MIT-licensed; full third-party notices are in
THIRD_PARTY_NOTICES.md.
来源:README.md,提交 767c004
工具
0版本历史
1- v0.2.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分