#! /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) # 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 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 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, v: print v sys.exit(1) format = None convert = None options = { } for o, a in opt: if o == "-f": Image.init() id = Image.ID[:] id.sort() print "Supported formats (* indicates output format):" for i in id: if Image.SAVE.has_key(i): print i+"*", else: print i, 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: apply(im.save, (argv[1], format), options) else: apply(im.save, (argv[1],), options) except: print "cannot convert image", print "(%s:%s)" % (sys.exc_type, sys.exc_value)