Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Imaging/Scripts/pilfile.py
blob: a634032c3d68f37c129f473bb9a9b7a4dd66d04e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#! /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)