Pillow/Scripts/pilfile.py
2010-07-30 22:52:47 -04:00

95 lines
2.4 KiB
Python

#! /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
#
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"
sys.exit(1)
try:
opt, args = getopt.getopt(sys.argv[1:], "fqivD")
except getopt.error, v:
print v
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:"
for i in id:
print i,
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,
if verbose:
print im.info, im.tile,
print
if verify:
try:
im.verify()
except:
if not quiet:
print "failed to verify image",
print "(%s:%s)" % (sys.exc_type, sys.exc_value)
except IOError, v:
if not quiet:
print file, "failed:", v
except:
import traceback
if not quiet:
print file, "failed:", "unexpected error"
traceback.print_exc(file=sys.stdout)