Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2012
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.91 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import getopt
  3. from PIL import Image, ImageDraw
  4. import sys
  5. import textwrap
  6.  
  7.  
  8. UNLIMITED = -1
  9. DEFAULT_WIDTH = 128
  10. DEFAULT_HEIGHT = 96
  11. DEFAULT_FORMAT = 'png'
  12.  
  13.  
  14. def generate_png_sequence(width, height, frames, format):
  15.     im = Image.new('RGB', (width, height))
  16.     draw = ImageDraw.Draw(im)
  17.  
  18.     for f in range(frames):
  19.         for x in range(width):
  20.             color = 'hsl(%d,100%%,50%%)' % (
  21.                 int(((x + f) * 360. / width) % 360), )
  22.             draw.line([(x, 0), (x, height)], fill=color)
  23.         im.save(sys.stdout, format)
  24.  
  25.  
  26. def usage():
  27.     print textwrap.dedent("""\
  28.        Use gen_png_seq.py (-s|--size=%dx%d) -f|--frames=30 (--format=%s) (-h|--help)
  29.  
  30.        size: <width>x<height> of the generated PNGs. %dx%d by default.
  31.        frames: Number of png images to generate. %d for unlimited. REQUIRED!
  32.        format: One of png or jpeg.
  33.        help: Show usage.
  34.    """ % (DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_FORMAT, DEFAULT_WIDTH,
  35.         DEFAULT_HEIGHT, UNLIMITED))
  36.  
  37.  
  38. def main():
  39.     try:
  40.         opts, args = getopt.getopt(sys.argv[1:], 's:f:h',
  41.                                    ['size=', 'frames=', 'format='])
  42.     except getopt.GetoptError, err:
  43.         print str(err)
  44.         usage()
  45.         sys.exit(1)
  46.  
  47.     width = DEFAULT_WIDTH
  48.     height = DEFAULT_HEIGHT
  49.     frames = 0
  50.     format = DEFAULT_FORMAT
  51.     for o, a in opts:
  52.         if o in ('-s', '--size'):
  53.             width, height = [int(x) for x in a.split('x')]
  54.         elif o in ('-h', '--help'):
  55.             usage()
  56.             sys.exit(0)
  57.         elif o in ('-f', '--frames'):
  58.             frames = int(a)
  59.         elif o in ('--format',):
  60.             format = a
  61.         else:
  62.             assert False, "unhandled option"
  63.  
  64.     if not frames:
  65.         usage()
  66.         sys.exit(0)
  67.  
  68.     generate_png_sequence(width, height, frames, format)
  69.  
  70.  
  71. if __name__ == '__main__':
  72.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement