index.cgi
changeset 12 aa6b83c94528
parent 11 0f070e9daa71
equal deleted inserted replaced
11:0f070e9daa71 12:aa6b83c94528
     3 from werkzeug.exceptions import HTTPException
     3 from werkzeug.exceptions import HTTPException
     4 import wsgiref.handlers
     4 import wsgiref.handlers
     5 
     5 
     6 from PIL import Image, ImageDraw, ImageFont, ImageEnhance
     6 from PIL import Image, ImageDraw, ImageFont, ImageEnhance
     7 from cStringIO import StringIO
     7 from cStringIO import StringIO
     8 import random, itertools
     8 import random, itertools, time
     9 
     9 
    10 if not hasattr(itertools, 'izip_longest') :
    10 if not hasattr(itertools, 'izip_longest') :
    11   
    11   
    12     def izip_longest(*args, **kwds):
    12     def izip_longest(*args, **kwds):
    13         # izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
    13         # izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
   295     Option('font-size',     False,  int,        Defaults.font_size,     None),
   295     Option('font-size',     False,  int,        Defaults.font_size,     None),
   296     Option('bg-color',      False,  arg_color,  Defaults.bg_color,      None),
   296     Option('bg-color',      False,  arg_color,  Defaults.bg_color,      None),
   297     Option('line-spacing',  False,  int,        Defaults.line_spacing,  None),
   297     Option('line-spacing',  False,  int,        Defaults.line_spacing,  None),
   298     Option('sharpness',     False,  float,      Defaults.sharpness,     None),
   298     Option('sharpness',     False,  float,      Defaults.sharpness,     None),
   299     Option('image-format',  False,  str,        Defaults.img_format,    IMAGE_FORMATS.keys()),
   299     Option('image-format',  False,  str,        Defaults.img_format,    IMAGE_FORMATS.keys()),
       
   300     Option('seed',          False,  int,        None,                   None),
   300 )
   301 )
   301 
   302 
   302 def handle_help (req) :
   303 def handle_help (req) :
   303     return werkzeug.Response('\n'.join(
   304     return werkzeug.Response('\n'.join(
   304         "%-15s %4s  %-10s %-20s %s" % data for data in [
   305         "%-15s %4s  %-10s %-20s %s" % data for data in [
   325         opts['text'] = TEXT_BY_LANG[opts['lang']]
   326         opts['text'] = TEXT_BY_LANG[opts['lang']]
   326 
   327 
   327     if opts['font-size'] > FONT_SIZE_MAX :
   328     if opts['font-size'] > FONT_SIZE_MAX :
   328         raise ValueError(opts['font-size'])
   329         raise ValueError(opts['font-size'])
   329     
   330     
       
   331     if opts['seed'] is None :
       
   332         opts['seed'] = time.time()
       
   333     
   330     # load/prep resources
   334     # load/prep resources
       
   335     random.seed(opts['seed'])
   331     data = build_data(opts['text'], opts['chars'], opts['colors'], opts['random-chars'], opts['random-text'], opts['random-text-char'])
   336     data = build_data(opts['text'], opts['chars'], opts['colors'], opts['random-chars'], opts['random-text'], opts['random-text-char'])
   332     font = load_font(opts['font'], opts['font-size'])
   337     font = load_font(opts['font'], opts['font-size'])
   333     
   338     
   334     # render the image
   339     # render the image
   335     img = render_img(data, font, opts['bg-color'], opts['line-spacing'])
   340     img = render_img(data, font, opts['bg-color'], opts['line-spacing'])