mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	This is, I guess, a few things the Python devs were just fed up with.
* "while 1" is now "while True"
* Types are compared with isinstance instead of ==
* Sort a list in one go with sorted()
My own twist is to also replace type('') with str, type(()) with tuple,
type([]) with list, type(1) with int, and type(5000.0) with float.
		
	
			
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#! /usr/local/bin/python
 | 
						|
#
 | 
						|
# The Python Imaging Library.
 | 
						|
# $Id$
 | 
						|
#
 | 
						|
# convert image files
 | 
						|
#
 | 
						|
# History:
 | 
						|
# 0.1   96-04-20 fl     Created
 | 
						|
# 0.2   96-10-04 fl     Use draft mode when converting images
 | 
						|
# 0.3   96-12-30 fl     Optimize output (PNG, JPEG)
 | 
						|
# 0.4   97-01-18 fl     Made optimize an option (PNG, JPEG)
 | 
						|
# 0.5   98-12-30 fl     Fixed -f option (from Anthony Baxter)
 | 
						|
#
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
 | 
						|
import site
 | 
						|
import getopt, string, sys
 | 
						|
 | 
						|
from PIL import Image
 | 
						|
 | 
						|
def usage():
 | 
						|
    print("PIL Convert 0.5/1998-12-30 -- convert image files")
 | 
						|
    print("Usage: pilconvert [option] infile outfile")
 | 
						|
    print()
 | 
						|
    print("Options:")
 | 
						|
    print()
 | 
						|
    print("  -c <format>  convert to format (default is given by extension)")
 | 
						|
    print()
 | 
						|
    print("  -g           convert to greyscale")
 | 
						|
    print("  -p           convert to palette image (using standard palette)")
 | 
						|
    print("  -r           convert to rgb")
 | 
						|
    print()
 | 
						|
    print("  -o           optimize output (trade speed for size)")
 | 
						|
    print("  -q <value>   set compression quality (0-100, JPEG only)")
 | 
						|
    print()
 | 
						|
    print("  -f           list supported file formats")
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
if len(sys.argv) == 1:
 | 
						|
    usage()
 | 
						|
 | 
						|
try:
 | 
						|
    opt, argv = getopt.getopt(sys.argv[1:], "c:dfgopq:r")
 | 
						|
except getopt.error as v:
 | 
						|
    print(v)
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
format = None
 | 
						|
convert = None
 | 
						|
 | 
						|
options = { }
 | 
						|
 | 
						|
for o, a in opt:
 | 
						|
 | 
						|
    if o == "-f":
 | 
						|
        Image.init()
 | 
						|
        id = sorted(Image.ID)
 | 
						|
        print("Supported formats (* indicates output format):")
 | 
						|
        for i in id:
 | 
						|
            if i in Image.SAVE:
 | 
						|
                print(i+"*", end=' ')
 | 
						|
            else:
 | 
						|
                print(i, end=' ')
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    elif o == "-c":
 | 
						|
        format = a
 | 
						|
 | 
						|
    if o == "-g":
 | 
						|
        convert = "L"
 | 
						|
    elif o == "-p":
 | 
						|
        convert = "P"
 | 
						|
    elif o == "-r":
 | 
						|
        convert = "RGB"
 | 
						|
 | 
						|
    elif o == "-o":
 | 
						|
        options["optimize"] = 1
 | 
						|
    elif o == "-q":
 | 
						|
        options["quality"] = string.atoi(a)
 | 
						|
 | 
						|
if len(argv) != 2:
 | 
						|
    usage()
 | 
						|
 | 
						|
try:
 | 
						|
    im = Image.open(argv[0])
 | 
						|
    if convert and im.mode != convert:
 | 
						|
        im.draft(convert, im.size)
 | 
						|
        im = im.convert(convert)
 | 
						|
    if format:
 | 
						|
        im.save(argv[1], format, **options)
 | 
						|
    else:
 | 
						|
        im.save(argv[1], **options)
 | 
						|
except:
 | 
						|
    print("cannot convert image", end=' ')
 | 
						|
    print("(%s:%s)" % (sys.exc_info()[0], sys.exc_info()[1]))
 |