小番茄图片混淆
把图片"打乱成番茄酱",需要时再原样"拼回去"——像素级混淆与解混淆,全程只在你的浏览器里发生。
把图片"打乱成番茄酱",需要时再原样"拼回去"——像素级混淆与解混淆,全程只在你的浏览器里发生。
点按钮、拖拽、粘贴截图都行。太大的图片会智能自动等比缩小,防止手机浏览器内存吃紧。不会影响图片质量。
一秒钟左右,图片变成一团看不出内容的"像素粥"。放心,每一个像素都还在,只是被搬去了别的座位。
对混淆图点"解混淆",所有像素按原路返回。点"还原"则随时回到你最初选择的那张原图。
点"下载结果"把当前画面存成 JPG。也可以在图片上长按/右键另存,两种方式拿到的是同一张图。
很多人第一次见到这个工具都会问同一个问题:图都乱成那样了,凭什么还能一个像素不差地拼回来?答案藏在两个古典而优雅的数学工具里——空间填充曲线和黄金分割。
想象一支笔从图片角落出发,以一种特定的蛇形路线不重复、不遗漏地走过每一个像素——这条路线就是广义希尔伯特曲线(gilbert curve)。经典的希尔伯特曲线只能画在边长为 2 的幂的正方形里,而广义版本通过递归地"劈半"矩形,让任意宽高的图片都能被一笔画完。走完之后,原本二维排列的像素,就变成了一条按访问顺序排队的一维长龙。
接下来对这条像素长龙做一件极其简单的事:整体循环右移一个固定的距离。移多远?算法选择了黄金分割比例:
之所以选 0.618 而不是随手写个一半,是有讲究的:黄金比例是"最无理"的无理数,用它做偏移能让打乱后的像素分布得足够均匀、足够没有规律感,肉眼几乎找不到任何残留的图案线索。而希尔伯特曲线自带的"空间局部性"(曲线上相邻的点在图上也相邻)又保证了打乱后的图不会出现成块的原图残片。
因为偏移量只由图片的宽和高决定,不需要密码、不需要密钥文件——拿到混淆图后重建同一条曲线,把队伍向左移回同样的距离,每个像素就都回到了自己原来的座位上。这也是"混淆"和"加密"的本质区别:它防的是"顺眼一瞥",不防"有心人",这一点请务必知晓。
上面这组小方块是页面加载时用同一套算法实时算出来的,不是贴图——你正在看的就是算法本身。
在论坛、群聊里分享含剧透或惊吓元素的图,先混淆再发,想看的人自己解,不想看的人刷过去毫无压力。
一些平台的机器审核偶尔会误判正常图片。混淆后的图在机器眼里只是噪点,可以作为临时的传输手段(请遵守平台规则与法律法规)。
把答案、优惠码截图混淆后发出,配上解混淆的说明,给对方一点"拆盲盒"的仪式感。
给学生直观展示什么是空间填充曲线、什么叫可逆变换——一张自己的照片被打乱又复原,比十页 PPT 都管用。
这三个词经常被混用,但它们解决的是完全不同的问题。用一张表说清楚:
| 方式 | 可逆吗 | 需要密钥吗 | 防得住谁 |
|---|---|---|---|
| 打码 / 模糊 | 不可逆,信息永久丢失 | 不需要 | 所有人(包括你自己) |
| 混淆(本工具) | 完全可逆 | 不需要,算法即"钥匙" | 随手一瞥的路人、机器缩略图 |
| 加密(如 AES) | 持密钥可逆 | 必须 | 没有密钥的任何人 |
一句话总结:想永久遮住用打码,想临时遮住用混淆,想真正保密用加密。敏感证件、隐私信息请不要依赖混淆来保护。
这个页面没有后端。选图之后,浏览器把图片画到一块内存里的 Canvas 画布上,所有像素搬运都由你设备上的 JavaScript 完成,处理结果也只存在于当前标签页的内存中。你可以自己验证:
唯一的建议:在网吧等公共电脑上使用后,记得删掉下载文件夹里保存的结果图。
因为小番茄算法是确定性的:曲线走法和偏移量都只由图片尺寸决定。只要对方用的是同一套算法,且图片没有被裁剪、缩放或旋转,这里就能一键解开。反过来,这里混淆的图拿到其他实现同样算法的工具里也能解。
九成原因是混淆图在传输途中被平台二次压缩或缩放了。缩放会改变像素坐标,置换关系随之错位;重度压缩则会把相邻像素"糊"在一起。解决办法:传混淆图时尽量走"原图 / 文件"通道,避开自动压缩。
会,但很慢。像素搬运本身一个字节都不会丢,损耗来自每次输出时的 JPEG 重编码(本工具已使用最高质量参数)。偶尔来回几次肉眼看不出区别,但请始终保留原图,不要把混淆图当唯一存档。
GIF 只会处理第一帧,动画会丢失。透明 PNG 可以处理,但输出为 JPEG 后透明区域会变成不透明背景。这两类图建议先转成普通静态图再操作。
工具会自动把超过 800 万像素的图缩到安全范围,一般手机也能在一两秒内完成。如果仍然卡顿,多半是设备内存紧张,关掉几个其他标签页再试即可。
"解混淆"是对当前画面执行一次逆向置换;"还原"则是直接回到你最初选择的那个文件,不管中间混淆了多少轮。手滑点错时,"还原"就是你的后悔药。
1891 年数学家大卫·希尔伯特提出这条曲线时,它还只是"一条能填满正方形的线"这种纯理论玩具。一百多年后,它被用在数据库索引(把地理坐标映射成一维键)、图像压缩、甚至芯片布线上——因为它有个宝贵性质:一维上挨着的点,二维上也大概率挨着。本工具正是借这个性质,让打乱后的图既彻底又"均匀地乱"。
黄金分割不只出现在美术课本里。在数论中,(√5−1)/2 被认为是"最难用分数逼近的无理数",这让它成为伪随机分布的天然好材料——低差异序列、斐波那契散列都在用它。小番茄算法拿它当偏移系数,本质上是让像素以"最不规则"的方式重新落座。
据说是因为混淆后的图片红红绿绿一团,像被捏爆的小番茄。真假无从考证,但这个名字确实比"基于广义希尔伯特曲线的循环像素置换工具"好记多了。