这个站点很小,只做一件事:把「吉尔伯特曲线 + 黄金分割位移」的像素置换算法准确、透明地跑在你的浏览器里。这一页说明我们怎么做、不做什么,以及它做不到什么。
要点速记
- 打开即用,没有账号,没有上传,所有计算在本地完成。
- 算法参数由同源代码算出,实现与原实现做逐字节比对。
- 混淆不是加密,它能提高自动化复用的成本,但挡不住人工还原。
这个站点只做一件事
打开页面、选择图片、选择方向、拿到结果,流程就结束了。这里没有社区,没有素材库,也没有必须注册才能使用的功能。工具页负责的只有一件事:把一张图的像素按固定规则搬家,搬乱或者搬回去。
把范围压得这么窄,是因为置换算法本身没有模糊地带——它要么严格正确,要么就是错的。与其在旁边堆一圈用不上的功能,不如把这一步写清楚、测清楚。混淆与解混淆是同一个循环的两个方向,只要整条链路没有经过有损压缩,一次处理总可以被另一次处理还原。
如果你手上正有一张需要还原的图片,直接打开图片混淆 / 解混淆工作台即可;想先弄明白背后发生了什么,从算法栏目读起会更顺。
技术实现
整个站点是纯 HTML5 + CSS3 + 原生 JavaScript,没有前端框架,没有第三方依赖库,没有后端接口。页面打开之后,算法就已经在你的机器上了,不存在"等服务器返回结果"这一步。也没有构建期的运行时依赖——交付出去的就是静态文件,放在静态空间里就能运行。
图标全部是内联 SVG,直接写在页面里,不额外发起请求。字体使用系统字体栈,跟随你的操作系统显示,同样不加载任何外部字体文件。这样做的直接好处是首屏更快、断网也能用;代价是不同系统上的字形略有差异,这属于外观问题,不影响处理结果。
正因为没有后端,本站也就不存在"服务器上的图片"这种东西。数据处理路径的细节写在隐私政策里,那里逐条列出了本地处理的具体步骤,以及页面会发起哪些请求。
算法一致性怎么保证
实现严格按「广义吉尔伯特曲线遍历 + 黄金分割位移」两步走:曲线把 W×H 的像素阵列排成一维序列 order,位移量取 k = round((√5 − 1) / 2 × W × H),序列整体循环移位后沿同一条曲线写回。公式与代码结构在置换流程与伪代码里可以逐行对照。
为了确认移植过程没有走样,构建期会运行一个比对脚本,把本站实现与原始实现在相同输入下做逐字节比对,覆盖从 1×1 到 1000×3 的 20 组尺寸。比对的是输出像素的每一个字节,不是肉眼看像不像,也不是文件大小对不对。
这份保证的具体含义需要说清楚。它保证的是:在列出的这 20 组尺寸上,本站的计算结果与原始实现完全一致。它不能保证任意尺寸都自动正确——没有列入比对的尺寸仍可能出现边界差异;它也不覆盖格式层面的差异——JPEG 编码由浏览器的画布实现完成,那一部分不属于置换算法,也不由本站控制。换句话说,算法层面的一致性经过逐字节验证,格式带来的损失依然存在,两者不要混为一谈。
想自己核对某个尺寸的参数,可以在曲线可视化页输入宽高,直接查看该尺寸下的位移量 k、循环个数与单个循环长度。
内容原则
页面上的文字都是自己组织语言写出来的,不搬运现成表述。凡是涉及数字的地方,要么来自算法本身的推导,要么来自构建期脚本的实际输出——分辨率、像素数、位移量、循环长度这些参数表,全部由同源代码算得后直接填入,不靠手抄。算法类文章里的公式与参数因此可以复核:你按公式重算一遍,得到的应该和页面上写的一样。
不写没有出处的数据,不写用户量、好评率、机构背书这类无法验证的信息,也不用绝对化的形容词替代事实描述。评价性的表述尽量换成可检查的细节,比如把"速度很快"写成"处理 200 万像素时临时内存约 24 MB,算法是单遍 O(N) 遍历"。
每篇文章都要写清失效边界。一项技术在哪里不管用,和它在哪里管用同样重要。如果一段内容读完让你觉得"这个方法好像什么问题都能解决",那说明这段内容没有写完整。
明确不做的事
下面这五条是刻意的选择,不是还没做:
- 不收集图片。没有上传接口,也没有任何形式的图片暂存。你的文件只存在于当前这个浏览器标签页里。
- 不做加密承诺。本算法公开、无密钥、可逆,把混淆说成加密是误导。这一点在使用条款与免责声明里也有对应说明。
- 不放广告与统计追踪脚本。页面不接入广告位,也不加载行为统计工具。
- 不做账号体系。没有注册、登录、会员等级,也就没有可以泄露的账号数据。
- 不引导付费。功能不设付费墙,不弹付费提示,也没有"高级版才有的画质"。
能力边界
混淆不是加密,这一点必须先讲清楚:算法公开且可逆,任何人拿到混淆图都能用同样的规则还原。它提高的是自动化直接复用的成本,挡不住有意为之的人工还原。
另外三条限制同样影响结果。图片如果经过 JPEG 这类有损格式,还原后会留下块状噪点与彩边,因为像素值在压缩阶段已经被改过,这不是算法出错。单张超过 800 万像素或单边超过 4000 像素的图片会先被等比缩放再处理,缩放本身就改变了像素,这条路径不再是无损的。还有一点常被误解:如果图片不是用这套算法混淆的,本站还原不出原图,只会得到另一张被打乱的图——置换只对得上固定的一条曲线和一个位移量。
关于噪点与格式的关系,输出格式与画质那一篇用对照方式拆开讲过。如果你已经看到结果里出现块状痕迹,从那一篇查起,比反复重试有效得多。
真正的脱敏只有一种做法:先把敏感信息永久遮挡或裁剪掉,再考虑要不要混淆。混淆后的图片里,水印、文字、人脸的像素仍然存在于图中,只是换了位置。
内容结构与阅读路径建议
全站内容分四块,各有明确用途。教程解决"怎么做",从三分钟上手到故障排查按顺序铺开;算法原理解决"为什么这么做",把曲线、位移、流程、可逆性、性能拆成独立主题;应用场景讨论"该不该用",重点写边界而不是好处;帮助中心负责查名词、查版本、报问题。
三条常见路径可以直接照抄。急着把图还原出来的人,走教程块的快速上手,再按需补解混淆教程。想彻底搞懂算法的人,按曲线、位移、流程、可逆性的顺序读下去,遇到不认识的词查术语表。关心"发图会不会泄露"的人,先读场景块里的隐私处理篇,再回头读隐私政策确认数据处理方式。
反馈与更正
页面上的数字写错了、表述不准确,或者某个现象与你的实际结果不符,欢迎指出来。内容更正不需要客套,写清"哪一页、哪一句、你认为应该是什么、依据是什么"就行。算法层面的问题建议附上图片的像素尺寸与处理方向,这样最容易复现。
提交入口在意见反馈页,那里可以在本地生成一份带浏览器信息的结构化报告,复制到邮件里就能用。如果只是想确认某个做法,建议先翻一遍常见问题,很多现象的原因已经在里面写过了。
本文更新于 2026-10-14。文中算法说明基于本站实际运行的实现整理,行为可通过 _build/verify-core.mjs 复核。
内容为本站原创,转载或引用请注明来源「小番茄混淆解图」并保留原文链接。