代码之家  ›  专栏  ›  技术社区  ›  dave

检测损坏的png文件的有效方法?

  •  2
  • dave  · 技术社区  · 15 年前

    我已经编写了一个程序来处理一堆由单独进程生成的png文件。捕获主要工作,但有时进程会停止并重新启动,这会留下损坏的图像。我无法检测进程何时终止,也无法检测哪个文件终止(大约有3000个png文件)。

    有没有好的方法来检查损坏的png文件?

    4 回复  |  直到 10 年前
        1
  •  3
  •   Brooks Moses    15 年前

    另一种可能的解决方案是稍微改变处理器处理文件的方式:让它始终创建一个名为temp.png的文件(例如),然后在完成后将其重命名为“正确”的名称。这样,您就知道周围是否有一个名为temp.png的文件,然后进程被中断,而如果没有这样的文件,那么一切都很好。

    (一个变体命名方案是做firefox的下载程序所做的事情——将.append.partial添加到真正的文件名中以获取临时名称。)

        2
  •  4
  •   Community CDub    8 年前

    既然你在linux系统上,你可能已经安装了python。

    一个简单的方法是尝试使用pil(python imaging library,python映像库)加载和验证文件(首先需要安装)。

    from PIL import Image
    
    v_image = Image.open(file)
    v_image.verify()
    

    (逐字摘自 my own answer in this thread )

        3
  •  3
  •   mlathe    15 年前

    有点老套,但很管用 如果您在Linux或类似的系统上运行,那么您可以使用“convert”命令

    $ convert --help
    Version: ImageMagick 5.5.6 04/01/03 Q16 http://www.imagemagick.org
    Copyright: Copyright (C) 2003 ImageMagick Studio LLC
    
    Usage: convert [options ...] file [ [options ...] file ...] [options ...] file
    

    如果生成无效的PNG,然后尝试转换,将出现错误:

    $ date> foo.png
    $ convert foo.png foo.gif
    convert: NotAPNGImageFile (foo.png).
    
        4
  •  3
  •   Artem Russakovskii    10 年前

    我知道这是2010年的一个问题,但我认为这是一个更好的解决方案: pngcheck .