Pillow/Scripts/pilfile.py

97 lines
2.5 KiB
Python
Raw Normal View History

2010-07-31 06:52:47 +04:00
#! /usr/local/bin/python
#
# The Python Imaging Library.
# $Id$
#
# a utility to identify image files
#
# this script identifies image files, extracting size and
# pixel mode information for known file formats. Note that
# you don't need the PIL C extension to use this module.
#
# History:
# 0.0 1995-09-01 fl Created
# 0.1 1996-05-18 fl Modified options, added debugging mode
# 0.2 1996-12-29 fl Added verify mode
# 0.3 1999-06-05 fl Don't mess up on class exceptions (1.5.2 and later)
# 0.4 2003-09-30 fl Expand wildcards on Windows; robustness tweaks
#
from __future__ import print_function
2010-07-31 06:52:47 +04:00
import site
import getopt, glob, sys
from PIL import Image
if len(sys.argv) == 1:
print("PIL File 0.4/2003-09-30 -- identify image files")
print("Usage: pilfile [option] files...")
print("Options:")
print(" -f list supported file formats")
print(" -i show associated info and tile data")
print(" -v verify file headers")
print(" -q quiet, don't warn for unidentified/missing/broken files")
2010-07-31 06:52:47 +04:00
sys.exit(1)
try:
opt, args = getopt.getopt(sys.argv[1:], "fqivD")
except getopt.error as v:
print(v)
2010-07-31 06:52:47 +04:00
sys.exit(1)
verbose = quiet = verify = 0
for o, a in opt:
if o == "-f":
Image.init()
id = Image.ID[:]
id.sort()
print("Supported formats:")
2010-07-31 06:52:47 +04:00
for i in id:
print(i, end=' ')
2010-07-31 06:52:47 +04:00
sys.exit(1)
elif o == "-i":
verbose = 1
elif o == "-q":
quiet = 1
elif o == "-v":
verify = 1
elif o == "-D":
Image.DEBUG = Image.DEBUG + 1
def globfix(files):
# expand wildcards where necessary
if sys.platform == "win32":
out = []
for file in files:
if glob.has_magic(file):
out.extend(glob.glob(file))
else:
out.append(file)
return out
return files
for file in globfix(args):
try:
im = Image.open(file)
print("%s:" % file, im.format, "%dx%d" % im.size, im.mode, end=' ')
2010-07-31 06:52:47 +04:00
if verbose:
print(im.info, im.tile, end=' ')
print()
2010-07-31 06:52:47 +04:00
if verify:
try:
im.verify()
except:
if not quiet:
print("failed to verify image", end=' ')
print("(%s:%s)" % (sys.exc_info()[0], sys.exc_info()[1]))
except IOError as v:
2010-07-31 06:52:47 +04:00
if not quiet:
print(file, "failed:", v)
2010-07-31 06:52:47 +04:00
except:
import traceback
if not quiet:
print(file, "failed:", "unexpected error")
2010-07-31 06:52:47 +04:00
traceback.print_exc(file=sys.stdout)