Gilbert 曲线 · 无损置换

图片混淆,
优先在命令行里跑。

把图片按 Gilbert 曲线打散成不可读的样子,再原样还原。 像素只在内存里置换,整条链路不重新编码,所以混淆多少次都不会掉画质。 CLI 无头、零三方依赖、PNG 进 PNG 出,适合批处理、CI 和大图;网页版只是可选的 GUI。

CLI 优先 零三方依赖 顺序表 兼容 / 整数 / 自定义 L 大图保护

CLI:零依赖、无头、PNG 进 PNG 出

Node ≥ 18 或 Python ≥ 3.10 即可,不需要 npm install。两个实现参数一致、产物逐字节相同。

Node 推荐,大图快

node ci/cli.mjs encode in.png out.png --rounds 3
node ci/cli.mjs decode out.png back.png --rounds 3

node ci/cli.mjs encode in.png enc.png --table "[1,-3,4,7,-5,7]"
node ci/cli.mjs decode enc.png back.png --table "[1,-3,4,7,-5,7]"

node ci/cli.mjs encode in.png enc.png --mode custom --shift 123456
node ci/cli.mjs decode enc.png back.png --mode custom --shift 123456

node ci/cli.mjs gen-table --length 8 --range 8
node ci/cli.mjs selftest

Python 零依赖,可移植

python3 ci/py/gilbert_cli.py encode in.png out.png --rounds 3
python3 ci/py/gilbert_cli.py decode out.png back.png --rounds 3

python3 ci/py/gilbert_cli.py encode in.png enc.png --table "[1,-3,4,7,-5,7]"
python3 ci/py/gilbert_cli.py decode enc.png back.png --table "[1,-3,4,7,-5,7]"

python3 ci/py/gilbert_cli.py encode in.png enc.png --mode custom --shift 123456
python3 ci/py/gilbert_cli.py decode enc.png back.png --mode custom --shift 123456

python3 ci/py/gilbert_cli.py selftest
python3 ci/py/gilbert_cli.py bench --mp 1

需要界面?

网页版把像素留在内存里,显示走 putImageData,只有点「下载」时才编码一次; 支持拖放 / 粘贴、按表编码、实时「与原始图」对比。

打开网页版 →

本地预览:先跑 node tools/serve.mjs(ES module 需要 http,不能直接双击 file://)。
本页由 GitHub Pages 托管;CLI 不能跑在浏览器里,克隆仓库后本地运行即可。

网页版能力

  • 拖放 / 粘贴 / 选择文件
  • 单步混淆 / 解混淆
  • 按表编码 / 解码 + 生成编码表
  • PNG 无损导出,JPEG 可选质量