我已經編寫了一個程序來處理由一個單獨的進程生成的一堆png文件。捕獲通常是有效的,但是有些時候該進程死亡並且正在重新啓動,從而導致圖像損壞。我無法檢測到進程何時死亡或哪個文件死亡(有〜3000個png文件)。檢測損壞的png文件的有效方法?
有沒有好的方法來檢查損壞的PNG文件?
我已經編寫了一個程序來處理由一個單獨的進程生成的一堆png文件。捕獲通常是有效的,但是有些時候該進程死亡並且正在重新啓動,從而導致圖像損壞。我無法檢測到進程何時死亡或哪個文件死亡(有〜3000個png文件)。檢測損壞的png文件的有效方法?
有沒有好的方法來檢查損壞的PNG文件?
一個不同的可能的解決辦法是稍微改變你的處理器如何處理這些文件:有它總是創建一個名爲temp.png文件(例如),然後將其重命名爲「正確」的名字一旦完成。這樣,你知道是否有一個名爲temp.png的文件,然後過程被打斷,而如果沒有這樣的文件,那麼一切都很好。
(A變種的命名方案是做什麼Firefox的下載並 - 追加.partial到真正的文件名,以獲得臨時名稱)
一個黑客攻擊的種類,但工程 如果您在Linux或東西運行像你可能有「轉換」命令
$ 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).
因爲你是一個Linux系統上,你可能已經擁有的Python安裝。
一個簡單的方法是嘗試使用PIL(Python Imaging Library)加載和驗證文件(您需要先安裝它)。
from PIL import Image
v_image = Image.open(file)
v_image.verify()
我知道這是從2010年的一個問題,但我認爲這是一個更好的解決方案:pngcheck。
「我無法檢測到進程何時死亡或死於哪個文件」 - 爲什麼? – 2010-03-05 01:34:16