6

Python(または別の言語)でJPEGファイルを開き、ファイルが破損しているかどうかを判断する方法があるかどうか疑問に思っていました(たとえば、JPGファイルのダウンロードが完了する前に終了した場合、ファイルを開いて表示することができません)?これを簡単に実行できるライブラリはありますか?

4

3 に答える 3

7

PILを使ってみることができます。ただし、切り捨てられたJPGファイルを開くだけでは失敗せず、verifyメソッドも失敗しません。ただし、ロードしようとすると例外が発生します。

まず、良いjpgファイルを壊します。

> du mvc-002f.jpg
56  mvc-002f.jpg
> dd if=mvc-002f.jpg of=broken.jpg bs=1k count=20
20+0 records in
20+0 records out
20480 bytes transferred in 0.000133 secs (154217856 bytes/sec)

次に、PythonImagingLibraryを試してみます。

>>> import Image
>>> im = Image.open('broken.jpg')
>>> im.verify()
>>> im = Image.open('broken.jpg')  # im.verify() invalidates the file pointer
>>> im.load()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/PIL/ImageFile.py", line 201, in load
    raise IOError("image file is truncated (%d bytes not processed)" % len(b))
IOError: image file is truncated (16 bytes not processed)

user827992が言ったように、切り捨てられた画像でさえ、通常、部分的にデコードされて表示される可能性があります。

于 2012-08-21T09:40:40.223 に答える