清除 PNG 图像中的元数据
02 与 JPEG 不同的隐私故事
大多数 PNG 文件都不是相机照片——它们是截图、图形素材,或者来自某个编辑工具的导出结果。这改变了真正的风险所在:
PNG 很少携带 GPS 数据,因为截图本来就没有相机 GPS 可以记录。它们携带的是"辅助数据块"——
tEXt/iTXt 自由文本字段(有时是创建该文件的软件名称,或某个编辑工具留下的注释)、
iCCP 色彩配置文件,如果这张 PNG 来自相机或手机而非截图,有时还会带有一个真正的 eXIf
数据块。
深入了解:为什么 PNG 自身的结束标记也始终会被检查是否有附加数据
PNG 有一个明确定义的文件结束数据块 IEND,就像 JPEG 有图像结束标记一样——同样的多格式混合手法
在这里同样适用:附加在 IEND 之后的数据,对普通看图软件来说是不可见的,但在文件中依然物理存在。
完整的像素重建会无条件地舍弃这些内容,这是对比页面所描述的同
一项保证,无论其中实际藏了什么。
为什么隐写术真正瞄准的正是 PNG
PNG 是无损的——您保存的每一个像素值,读取回来时都完全一致,不会因为任何重新压缩而产生细微变化。正是这一特性,使 得把数据藏在像素值最低有效位中的经典 LSB 隐写术,能够完整无损地经受住一次简单的"只清除元数据"处理——像素本身从 未改变,改变的只是它们周围的元数据。本工具可选的隐写术缓解功能(清除每个像素的最低有效位)正是因此而存在,对 PNG 来说,它的意义远比对 JPEG 更大,因为 JPEG 的重新压缩本身就已经作为副作用扰动了这些位。
无损格式上的压缩预设
由于 PNG 没有像 JPEG 那样的"质量"概念,这里的压缩预设控制的其实是滤波和 deflate 压缩的激进程度——"超级压缩"会 投入更多算力,为完全相同的像素寻找更小的编码方式,而不是降低质量。每种预设依然都会去除 100% 的元数据。