mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env 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
 | 
						|
 | 
						|
import site
 | 
						|
import getopt
 | 
						|
import glob
 | 
						|
import 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 as v:
 | 
						|
    print(v)
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
verbose = quiet = verify = 0
 | 
						|
 | 
						|
for o, a in opt:
 | 
						|
    if o == "-f":
 | 
						|
        Image.init()
 | 
						|
        id = sorted(Image.ID)
 | 
						|
        print("Supported formats:")
 | 
						|
        for i in id:
 | 
						|
            print(i, end=' ')
 | 
						|
        sys.exit(1)
 | 
						|
    elif o == "-i":
 | 
						|
        verbose = 1
 | 
						|
    elif o == "-q":
 | 
						|
        quiet = 1
 | 
						|
    elif o == "-v":
 | 
						|
        verify = 1
 | 
						|
    elif o == "-D":
 | 
						|
        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=' ')
 | 
						|
        if verbose:
 | 
						|
            print(im.info, im.tile, end=' ')
 | 
						|
        print()
 | 
						|
        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:
 | 
						|
        if not quiet:
 | 
						|
            print(file, "failed:", v)
 | 
						|
    except:
 | 
						|
        import traceback
 | 
						|
        if not quiet:
 | 
						|
            print(file, "failed:", "unexpected error")
 | 
						|
            traceback.print_exc(file=sys.stdout)
 |