案例

打不开的照片

只显示灰色方块的照片往往并不是空的。已经传过来的那部分画面通常还在文件里。

木桌上一张撕破的照片
生成的插图

出问题的那一刻

照片正在从手机或相机存储卡复制,传输中断了,现在图库里只显示灰色方块或报错。如果这张照片别处没有备份,这个错误看起来就像判了死刑。其实往往不是:已经传过来的那部分画面通常还在文件里。

为什么看图软件打不开

JPEG 以描述图片的文件头开始,接着是从上到下写入的压缩图像,最后是结束标记。复制提前中断时,结束标记永远不会到达,很多看图软件干脆拒绝整个文件,而不是显示已有的部分。PNG 把图像存成一个个压缩数据块,每块都有校验和,只要一个块损坏,严格的看图软件就会拒绝它之后的全部内容。

文件会经历什么

工具会读取文件头,沿着图像数据一直读到无法读取为止,然后写出一个以正确方式结尾的新文件。对 PNG,它会逐块检查,并在损坏的片段之后重新接上压缩数据流。不会凭空补画:已经到达的像素原样保留,报告会说明可读数据在哪里中断。

您最终得到什么

被截断的照片打开后,上半部分完好;从未到达的那些行会缺失,通常在底部显示为灰色或空白的条带。中间有损坏片段时,可能留下一条错位或缺失的行。如果 JPEG 的开头丢失,文件头也随之丢失,就没有可用来重建的依据:工具会如实说明,不会写出任何文件。

根据我们的测试,哪些情况有效

在我们测试的所有案例中,JPEG 在文件被截断或中间区域损坏时都能重建。PNG 在被截断、中间损坏、数据错位和零散错误的情况下都能重建。数据错位的 JPEG,以及开头丢失的两种格式,在我们的测试中都没能重建。完整表格见文件类型指南。

开始之前

请在副本上操作,并保留原文件。如果照片来自相机存储卡,在把卡上所有内容复制出来之前请停止使用这张卡,因为新拍的照片可能覆盖剩下的数据。如果别处还有副本,比如云端备份或您发出的消息,那份副本会比任何重建都好。

检查新照片

以原始尺寸打开,查看底部以及画面发生变化的条带。能以原始尺寸打开的照片才是可用的文件;能显示缩略图并不能证明这一点。

常见问题

照片缺失的部分能恢复吗?

不能。从未写入文件的部分无法重建。新照片包含已经到达的部分。

照片会被重新压缩或修改吗?

不会。完好的图像数据原样保留,只重写让文件能被读取的部分。

照片会被上传到任何地方吗?

不会。照片在您设备上的浏览器中读取,绝不会离开您的设备。

来源

本指南参考的文档。

  1. ITU-T T.81:JPEG 标准
  2. W3C:Portable Network Graphics(PNG)规范