图片混淆 / 解混淆 /批处理
选择图片,点「混淆」或「解混淆」,结果就地替换图片区里的内容,随时可以用「还原」回到原图。
选择图片,然后点「混淆」或「解混淆」
交互与原始工具完全一致:一个图片区,四个控件,结果就地替换。图片区里显示的永远是「当前这一张」,随时可以用「还原」回到载入时的状态。
算法参数
下列数值按当前载入的图片实时算出,可以用来核对处理行为是否符合预期。
- 状态
- 等待载入图片
批量处理
单张流程之外的可选模块。一次选择多张图片排队处理,按队列顺序逐张执行,完成后可打包成 ZIP 下载。批量不改变单张流程的任何行为。
关于批量与画质:批量同样遵循「JPEG 有损、PNG 无损」的规则。如果批次里混合了不同来源的乱图,请先确认它们由同一套算法产生,否则无法用一个方向全部还原。
四个控件分别做什么
选择图片
打开文件选择框。也可以把文件拖进图片区,或在页面任意位置按 Ctrl + V 粘贴剪贴板里的截图。载入后只显示原图,不会自动处理。
混淆
对当前显示的图片执行一次混淆,结果直接替换图片区里的内容。反复点击会沿曲线继续累加位移量,画面会更乱,但不会损坏文件。
解混淆
反向移动相同的距离,用来还原被打乱的图片。选错方向不会出错,只是结果看起来更乱,换成另一个按钮再点一次即可。
还原
把图片区恢复成你最初选择的那张图(若原图超出上限,则是等比缩放后的版本)。想反复对比处理前后,用它最直接。
处理前值得知道的数字
下表数值来自本站实际运行的实现,不是估算。载入图片后,工具下方的「算法参数」会实时显示同样的指标。
| 分辨率 | 像素数 N | 位移量 k | 循环个数 gcd(k, N) | 能否无损往返 |
|---|---|---|---|---|
| 800 × 600 | 480 000 | 296 656 | 16 | PNG 链路可以 |
| 1280 × 720 | 921 600 | 569 580 | 60 | PNG 链路可以 |
| 1920 × 1080 | 2 073 600 | 1 281 555 | 135 | PNG 链路可以 |
| 2048 × 1536 | 3 145 728 | 1 944 167 | 1 | PNG 链路可以 |
| 4000 × 3000 | 12 000 000 | 7 416 408 | 24 | 超出上限,会先等比缩放 |
「循环个数」是一次长度为 N 的循环移位在数学上的自然结果:它会分解成 gcd(k, N) 个互不相交的循环。这个数字只影响实现细节,不影响可逆性——无论分成几个循环,解混淆都能把每个像素搬回原位。
这个工具能做什么,不能做什么
它擅长的
- 把用同一套方案混淆过的图片还原回可读状态
- 在本地批量处理图片,不产生任何上传流量
- 用无损格式做到混淆与解混淆之间的逐字节往返
- 把一张图打乱后再分享,避免内容被直接读懂
它做不到的
- 还原不是这套算法产生的乱图,例如被裁剪、旋转或二次截图后的图片
- 把有损格式丢掉的高频信息找回来,JPEG 的损失不可逆
- 充当加密工具:算法公开、没有密钥,任何人都能解混淆
- 替代脱敏:混淆只移动像素,不删除任何信息
工具页的三个高频问题
为什么点完「混淆」以后图片看起来更乱了?
这通常说明方向选反了。混淆与解混淆是一对互逆操作:对已经混淆过的图片再执行一次混淆,等价于把位移量累加到 2k,画面依旧不可读。
判断方法很简单:如果处理前还能勉强看出轮廓、处理后再也看不出任何结构,方向就是错的。点「还原」回到载入时的状态,换成另一个按钮再试一次即可,文件本身不会损坏。
为什么处理四千万像素的相机原图会失败?
因为置换需要在内存里同时容纳曲线序(4N 字节)和输入输出像素(各 4N 字节)。四千万像素意味着单是置换就要占用约 480 MB,再加上画布的若干份副本,浏览器标签页很容易被系统回收。
因此本站把单张处理上限设为 800 万像素、单边 4000 像素,超出时先等比缩放到上限内再处理。缩放会改变像素值,所以这种情况下链路不再是无损的。
处理速度主要取决于什么?
置换本身是严格 O(N) 的单遍遍历,与图片内容无关,通常不是最慢的一环。真正耗时的是画布读取像素和最后的 JPEG 编码,尤其是编码阶段。
换成 PNG 输出时开销结构会变化:小图往往更快,而照片类大图因为 PNG 压缩率低,导出反而可能更慢、体积更大。想了解细节可以看 复杂度与性能。