我想知道是否有办法用Python(或其他语言)确定打开JPEG文件,并确定它是否已损坏(例如,如果我在JPG文件完成之前终止下载,那么我我无法打开文件并查看它)?是否有库可以轻松完成?
您可以尝试使用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)
Run Code Online (Sandbox Code Playgroud)
然后我们尝试Python Imaging Library:
>>> 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)
Run Code Online (Sandbox Code Playgroud)
如用户872992所述,甚至截断的图像通常仍然可以被部分解码和显示.
您可以使用 PIL 包来做到这一点:
import Image
def is_image_ok(fn):
try:
Image.open(fn)
return True
except:
return False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3228 次 |
| 最近记录: |