Metlivi 博客

如何检查整合照片图库中的损坏文件

要检查整合后的照片图库,请使用能够读取图像数据的解码器扫描每张图片,保存失败或触发警告的文件报告,然后在替换或恢复任何内容之前逐一检查这些文件。快速检查缩略图或文件大小可以发现明显的问题,但无法确认完整图像是否可读。此工作流程使用 ImageMagick 的 magick identify,适用于存储在本地或已挂载驱动器上的图库。

2026年10月15日阅读时间 6 分钟作者:Metlivi Editorial Team
第 1 节

损坏检查能说明什么——以及不能说明什么

一个文件可能具有常见的扩展名和看似合理的大小,但实际上包含截断或损坏的图像数据。反之,一个可以在某个查看器中打开的文件,在另一个解码器中仍可能会产生警告或直接报错。扫描记录的只是某个工具读取文件的情况;它并不能证明每个像素在视觉上都完好无损,也不能保证所有应用程序对该文件的解析都完全一致。

ImageMagick 的 magick identify 可以报告图像特征,并能指出不完整或损坏的文件。为了进行有意义的检查,请使用 +ping 来请求完整读取:ImageMagick 说明,其默认的 ping 模式仅读取基本识别所需的信息,可能会避免读取整张图像。加上 -regard-warnings,以便让警告信息影响命令的退出状态。ImageMagick Identify 文档,ImageMagick 基本用法

请将结果视为初步排查。报告的警告值得进一步审查;但这本身并不能证明照片已无法使用。扫描无异常仅意味着该解码器在未报告问题的情况下完成了读取,并不代表图片看起来一定正常,也不代表所有特定文件格式的细节都完全合规。

第 2 节

扫描前准备好图库

请先从稳定的副本或备份开始。切勿对文件的唯一副本直接执行修复或转换操作:某些恢复尝试可能会更改数据,而写入中断则可能使本已损坏的文件进一步恶化。如果整合后的图库分布在多个驱动器或文件夹中,请记录下您打算包含的每个根目录。

关闭正在导入、编辑或同步该收藏集的软件。这可以降低文件在扫描过程中发生更改的几率。确认已挂载的驱动器可用,且用于扫描的账户具备读取权限。权限错误或驱动器断开连接必须视为未扫描区域,而不能当作没有问题。

从官方渠道安装适用于您操作系统的 ImageMagick,然后在终端中确认 magick 命令可用。先在几个已知正常的图像上进行测试。ImageMagick 的该命令拼写适用于第 7 版;较旧的安装版本可能会使用不同的命令名称。切勿将缺少命令或格式不支持的错误视为文件损坏的证据。

第 3 节

运行完整扫描并获取报告

在 macOS 或 Linux 上,Bash 可以递归遍历图库,并将失败和警告信息写入单独的日志中。请将 /path/to/photo-library 和报告路径替换为您实际的位置。请将报告保存在正在扫描的图库之外,以免扫描将其误当成图像。

: > "$HOME/photo-scan-errors.log"
find "/path/to/photo-library" -type f -print0 |
while IFS= read -r -d '' file; do
  if ! magick identify +ping -regard-warnings "$file" >/dev/null 2>>"$HOME/photo-scan-errors.log"; then
    printf '%s\n' "$file"
  fi
done

终端会输出检查失败的文件路径;日志则会记录来自 ImageMagick 的诊断信息。该循环包含每个文件,因此非图像文件也可能会被报告为无法识别的格式。如果图库中包含附属文件(sidecar files)、文档或其他非图像内容,这是正常现象。对于混合归档,请将“未知格式”与解码器错误区别对待,并在必要时将扫描范围缩小到已知的图像扩展名。不过,扩展名过滤可能会漏掉使用了非常规扩展名或没有扩展名的图像。

如果日志为空且没有输出任何路径,则说明在此解码器的检查下,本次运行未产生任何诊断信息和失败报告。请确认根路径正确无误且扫描已正常结束;因拼写错误、无法访问的驱动器或中断的命令导致的空白报告并不代表通过检查。对于极大的图库,建议一次运行一个文件夹或驱动器,并标记每份报告,以便清楚地了解实际覆盖的范围。

第 4 节

安全地审查每个被标记的文件

使用输出的路径找到原文件,然后仅对该文件运行检查以获取更清晰的诊断信息:magick identify +ping -regard-warnings "/full/path/to/file.jpg"。记录该信息,并与在另一个查看器或编辑器中的打开情况进行对比。检查该文件是完整显示、仅部分显示还是根本无法显示。请注意,即使主图像数据已损坏,应用程序仍可能显示嵌入的预览图。

在记录中区分三种情况:解码失败的文件、解码时出现警告的文件,以及虽能解码但看起来异常不完整或有视觉损坏的文件。这样可以让后续处理更加高效,而不是把所有警告都混为一谈。GIF 或 TIFF 等多帧格式可以在一个文件中包含多张图像;如果问题仅在第一帧之后出现,请检查相关的帧或页面。

第 5 节

在不覆盖源文件的前提下选择恢复途径

如果存在其他副本,在尝试修复前请先进行比对。文件哈希值可以判断两个副本的内容是否完全一致:微软文档指出,相匹配的哈希值可以确认文件内容完全相同,而不同的名称或扩展名不会影响哈希值。例如,PowerShell 的 Get-FileHash 默认使用 SHA-256。Microsoft Learn:Get-FileHash

匹配的哈希值表明两个副本在字节级别完全一致;但并不能证明其中任何一个副本是完好无损的。如果两个副本都出现相同的错误,请寻找其他备份或原始来源。如果一个正常而另一个损坏,请保留完好的副本,并在确认两份文件确实对应同一张照片后再替换损坏的副本。在替换验证无误之前,请保留原先被标记的文件。

如果没有完好的副本可用,在尝试特定格式的恢复工具之前,请先为被标记的文件创建一份单独的副本。从头重新检查所有恢复出的文件,在查看器中将其打开,并比对尺寸或其他预期的属性。ExifTool 指出它并非设计为图像验证工具;其 -validate 检查主要针对 JPEG 和 TIFF 提供额外检查,因此应将其作为补充诊断手段,而非通用的合格/不合格判定标准。ExifTool 常见问题:ExifTool 可以用作图像验证工具吗?

第 6 节

确认覆盖范围并保存有效记录

在确认审查完成之前,请验证每个目标文件夹均已包含在内、扫描已执行完毕且报告已成功保存。审查提示驱动器不可读、权限问题、不受支持的格式或缺少解码器的信息时,应将其与确认的图像读取失败区别对待。对恢复的文件重新运行检查,并在图像查看器中对图库进行抽样检查,特别留意被标记的项目和多帧文件。

将扫描日期、ImageMagick 版本、扫描的文件夹以及失败日志一并记录在维护笔记中。这些记录有助于日后进行对比扫描,并帮助区分旧警告与新出现的读取问题。严谨的检查应结合完整的解码器读取、有针对性的视觉审查以及对任何替换副本的验证;没有任何单个命令可以替您做出这些判断。

第 7 节

来源

相关阅读

继续探索这个主题