#! /usr/local/bin/python # # The Python Imaging Library. # $Id: pilfile.py 2813 2006-10-07 10:11:35Z fredrik $ # # 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)