#! /usr/bin/env python
#
# make thumbnails of all of the .jpg files ina directory
#
import sys, os, string
import Image
import ImageFilter
class DefaultOptions:
size = 704
# if true, just print messages about what the script would be doing
# but don't actually do anything.
noop = 0
# Print lots of messages
verbose = 1
#
help = 0
#
# Some methods
#
def print_messages(self):
return self.verbose or self.noop
options = DefaultOptions()
def create_directory(dir):
'''Create the directory dir and its parent directories if necessary'''
if os.path.isdir(dir):
return
parent, base = os.path.split(dir)
create_directory(parent)
try:
if options.print_messages():
print 'create directory %s' % dir
if not options.noop:
os.mkdir(dir, 0777)
except os.error, exc:
sys.stderr.write("can't create directory %s:%s\n" % (dir, exc))
def writeEntry(entryname, size):
print "
Cap: %s | " % (size[0], size[1], entryname, entryname)
def makethumb(jpegfile):
if os.path.isfile("./thumbs/"+jpegfile):
print "already have thumb for "+jpegfile
return
try:
imfile = Image.open(jpegfile)
bimage = imfile.filter(ImageFilter.SMOOTH)
# bimage = imfile.filter(ImageFilter.BLUR)
bimage.thumbnail((options.size, options.size))
#bimage = fimage.transform((704,576), Image.AFFINE, (1,0,0,1,0,0), Image.BICUBIC)
writeEntry(jpegfile,bimage.size)
bimage.save("./thumbs/"+jpegfile, quality=100)
except IOError, iio:
sys.stderr.write("can't open image %s reason: %s\n" % (jpegfile,iio))
return
except os.error, exc:
sys.stderr.write("can't create directory %s:%s\n" % (dir, exc))
def check_option(option, value):
if value is None:
sys.stderr.write('Value required for option %s\n' % option)
sys.exit(1)
def parse_cmd_line():
argv = sys.argv[1:]
for arg in argv:
if '=' in arg:
arg, value = string.split(arg, '=', 1)
else:
value = None
if arg in ('-h', '--help'):
options.help = 1
elif arg == '--noop':
options.noop = 1
elif arg == '-size':
options.size = value
else:
sys.stderr.write('Unknown option %s\n' % arg)
def print_help():
dict = opt.__class__.__dict__.copy()
dict.update(opt.__dict__)
dict['pyversion'] = sys.version[:3]
print help_message % dict
help_message = """\
usage:
mkthumbs.py [options...]
Options:
-h, --help
Print this help message. Do nothing else
--noop
Do nothing. Just print messages about what would be
done.
"""
def main():
parse_cmd_line()
if options.help:
print_help()
else:
print "ready to rock"
create_directory("./thumbs")
files = os.listdir(os.curdir)
for infile in files:
ext = os.path.splitext(infile)[1]
if ext == '.jpg':
makethumb(infile)
if __name__ == '__main__':
main()