解混淆 小番茄图片混淆 · 在线还原 打开工具

COMPATIBILITY / 参数

兼容与参数

图片能不能被正确还原,往往不取决于按钮有没有点对,而取决于尺寸、格式和压缩过程有没有被改变。这一页把本站与参考算法对齐的参数逐项列出,也说明哪些情况下结果会“看起来不对”。

与参考实现同序800 万像素上限

“能不能还原”通常不是运气问题,而是尺寸、格式和压缩过程有没有被改变的问题。 这一页把本站与参考算法对齐的参数列出来,也把常见的失败原因按可能性排序。

互通需要三个条件

只要满足下面三条,用参考实现混淆的图片就可以直接在本站还原,反过来也一样:

  1. 宽高完全一致。不是“看起来差不多”,而是像素级相同。少一个像素,曲线形状和步长都会变。
  2. 使用同一套曲线与位移规则。也就是 Gilbert 曲线遍历,加上约 0.618 倍总像素的循环位移。
  3. 像素没有被重新采样。裁剪、缩放、旋转、截图、聊天软件压缩都可能改变像素位置或尺寸。

本站的曲线生成、位移公式、像素搬运方向都与公开参考实现一致。实现上把逐字节复制改成了 32 位整字复制,并把坐标数组换成了扁平的类型化数组,但顺序与结果不变。

参数逐项对齐

与参考实现对齐的关键参数
项目取值备注
曲线广义 Hilbert / Gilbert支持任意宽高矩形,不要求 2 的幂次。
步长round((√5 − 1) / 2 × W × H)四舍五入,整数。
混淆第 i 点写入第 i + shift 点循环取模。
解混淆第 i 点读取第 i + shift 点方向相反,参数相同。
通道RGBA 四字节整体搬运透明度也参与重排,不会被单独保留。
像素上限8,000,000超出时等比缩小。
单边上限4,000 像素长边或短边任一超出都会缩放。
默认导出JPEG,质量参数 1仍属于有损编码,但压缩程度最低。

这里的“质量 1”是浏览器 toBlob 接口的质量参数,不是“无损”的同义词。 不同浏览器对 JPEG 编码器的实现不同,即使参数相同,输出字节也可能不同。 如果你需要严格的像素往返,请使用 PNG。

尺寸上限怎么算

单张图片同时受两条约束:总像素不超过 800 万,单边不超过 4000 像素。 触发任意一条,就会按比例缩小,缩放比例取三个候选值中最小的那个:

scale = min(
  sqrt(8,000,000 / (W × H)),
  4000 / W,
  4000 / H,
  1
)

举几个具体例子:

  • 4000 × 2000:单边正好 4000,总像素 800 万,刚好在上限内,不缩放。
  • 3264 × 2448:约 799 万像素,不缩放。
  • 6000 × 4000:总像素 2400 万,单边 6000,会缩到 4000 × 2667 左右。
  • 2000 × 6000:单边 6000,总像素 1200 万,会缩到 1333 × 4000。

缩放使用浏览器的高质量插值,不会拉伸变形。页面会在图片下方提示原始尺寸和缩小后的尺寸。 被缩小的图片仍能正常混淆,但不能再与“原始尺寸混淆图”互通。

JPG 与 PNG 的取舍

两种输出格式的差异
维度JPGPNG
压缩方式有损无损
文件体积小大,尤其是噪点多的混淆图
透明通道不支持,铺白底保留
反复往返会累积压缩痕迹不产生额外损失
兼容性最广现代浏览器与聊天软件均支持
推荐场景一次性分享、体积敏感需要还原、多次处理、保留透明

一个常见的误解是“JPG 质量 1 就等于无损”。实际上它仍然会做颜色采样和量化, 只是程度最低。混淆图本身就是高频噪点,JPG 编码器在这类内容上更容易产生块状痕迹。 如果你在意还原后的细节,请从源头选择 PNG。

透明、动图与旋转

读取时,工具会把透明通道当作普通字节一起重排。这对可逆性没有影响,但导出 JPG 时会铺白底, 透明信息就丢失了。需要保留透明,请使用 PNG 输出。

动图(GIF、动态 WebP)经过 Canvas 后只保留第一帧,输出为静态图。 这不是缺陷,而是 Canvas 绘制模型的限制;如果需要对每一帧处理,需要逐帧导出再重新合成。

手机拍摄的照片可能带有 EXIF 方向信息。现代浏览器在绘制到画布时会按方向信息自动旋转, 因此你看到的宽高可能已经与文件头记录的不同。处理前请以工具显示的宽高为准, 并确保发送方与接收方使用同一份文件。

另外,Canvas 导出通常不会保留原始的 ICC 色彩配置。广色域图片在浏览器里可能出现轻微色差, 这不影响像素顺序的可逆性,但如果你对颜色准确性要求很高,建议先在专业软件里转换到 sRGB, 再进行比较或归档。

还原失败的六种原因

  1. 图片被缩放。聊天软件的“压缩发送”、社交平台的自动缩放、网页上传限制都会改变宽高。
  2. 图片被裁剪。哪怕只裁掉几个像素,曲线上的坐标关系也会整体错位。
  3. 用截图代替原文件。截图会重新采样,颜色和位置都可能变化。
  4. 尺寸超过上限后被本站缩小。缩小后的图片不能与原始尺寸的结果互通。
  5. 使用了不同的算法。换一个工具、换一个参数,顺序就不一样。
  6. 文件本身损坏。解码失败时画面可能不完整,自然无法还原。

排查时按“宽高是否一致 → 是否被裁剪 → 是否经过二次压缩 → 是否同一算法”的顺序检查, 通常比反复点按钮更有效。

一次五分钟自检

如果你不确定某张图能否在自己的设备上正常往返,可以按下面的步骤做一次小实验:

  1. 选一张不重要的图片,用示例图片也可以。
  2. 把输出格式切成 PNG,点“混淆图片”,下载结果。
  3. 刷新页面,导入刚下载的混淆图,点“解混淆图片”。
  4. 用图片查看器对比还原结果与原图。PNG 路径下,正常应达到像素级一致。

如果 PNG 路径能还原、JPG 路径有细微差异,属于有损压缩的正常现象; 如果两条路径都明显错位,通常是宽高被改变,或导入的不是同一张图。

下一步

想了解曲线和步长的推导,读算法原理;想确认哪些图片不该用混淆,读隐私与安全边界;遇到具体报错,可以到常见问题按主题查找。

先确认尺寸,再动手处理

如果图片来自聊天软件或社交平台,建议先按原图方式保存,再放进工具里检查宽高是否与发出时一致。