Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import getopt
- from PIL import Image, ImageDraw
- import sys
- import textwrap
- UNLIMITED = -1
- DEFAULT_WIDTH = 128
- DEFAULT_HEIGHT = 96
- DEFAULT_FORMAT = 'png'
- def generate_png_sequence(width, height, frames, format):
- im = Image.new('RGB', (width, height))
- draw = ImageDraw.Draw(im)
- for f in range(frames):
- for x in range(width):
- color = 'hsl(%d,100%%,50%%)' % (
- int(((x + f) * 360. / width) % 360), )
- draw.line([(x, 0), (x, height)], fill=color)
- im.save(sys.stdout, format)
- def usage():
- print textwrap.dedent("""\
- Use gen_png_seq.py (-s|--size=%dx%d) -f|--frames=30 (--format=%s) (-h|--help)
- size: <width>x<height> of the generated PNGs. %dx%d by default.
- frames: Number of png images to generate. %d for unlimited. REQUIRED!
- format: One of png or jpeg.
- help: Show usage.
- """ % (DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_FORMAT, DEFAULT_WIDTH,
- DEFAULT_HEIGHT, UNLIMITED))
- def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], 's:f:h',
- ['size=', 'frames=', 'format='])
- except getopt.GetoptError, err:
- print str(err)
- usage()
- sys.exit(1)
- width = DEFAULT_WIDTH
- height = DEFAULT_HEIGHT
- frames = 0
- format = DEFAULT_FORMAT
- for o, a in opts:
- if o in ('-s', '--size'):
- width, height = [int(x) for x in a.split('x')]
- elif o in ('-h', '--help'):
- usage()
- sys.exit(0)
- elif o in ('-f', '--frames'):
- frames = int(a)
- elif o in ('--format',):
- format = a
- else:
- assert False, "unhandled option"
- if not frames:
- usage()
- sys.exit(0)
- generate_png_sequence(width, height, frames, format)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement