def build(*filter): makedirs("build/labels/embedded") makedirs("build/labels/practice") makedirs("build/labels/thumbnails") regions = get_regions() for label in labels(): if filter and label.canonical not in filter: continue try: source = Image.open(label.source) region = regions[label.canonical] width, height = source.size # embedded images outer_size = outer_width, outer_height = [ int(float(region.diagonal) * WIDTH), int(float(region.width) / region.diagonal * region.height * HEIGHT), ] if width > outer_width: inner_size = [ int(outer_width), int(float(outer_width) * height / width), ] embedded = source.resize(inner_size, Image.ANTIALIAS) else: embedded = source embedded.save(label.embedded) practice = embedded.resize([dim / 2 for dim in embedded.size], Image.ANTIALIAS) practice.save(label.practice) # thumbnail thumb_size = [ int(float(width) / height * 100), 100, ] thumb = source.resize(thumb_size, Image.ANTIALIAS) thumb = darken(thumb, .5) thumb.save(label.thumbnail) print label.parts, outer_size, source.size, embedded.size, thumb_size, practice.size except Exception, reason: print>>sys.stderr, label.parts, reason