[Image-SIG] Web button creator script with PIL.
Joao S. O. Bueno Calligaris
gwidion at mpc.com.br
Mon Jul 10 08:17:19 CEST 2006
I just made this script wover the weekend, and would like to share it with you.
Instead of writing once more what it is about, I will just
paste the docstring bellow. :-)
WHat it can do can be seen here:
This program is Free Software - see the file LICENSE for details
Dynabutton creates dinamic buttons for WEB or other UIs in real time.
Copyright 2006 - João S. O. Bueno Calligaris
It can be used either from command line, or as a cgi program.
The accepted parameters are:
button_filename = DEFAULT_BUTTON,
button_text = "OK",
font_file = "VeraSeBd.ttf",
font_size = 18,
text_color = (255, 255, 255),
use_shadow = True,
shadow_color = (0, 0, 0, 192),
fuzzy_shadow = None,
shadow_offset = 1,
width = None,
height = None,
left_width = None,
right_width = None,
center_slice = None,
align = CENTER
button_filename - The filename on the server side which contains a
template to the button that will be used. The program uses the
left and right endings of this template as the button caps
and copies/replicates the middle section. Over this middle
section, it renders the button text
button_text - The button text per se. Use utf-8 encoding
font_file - the font file (currently ttf files only) on the
server side which contains the font to be used to render the text.
font_size - the font size, in pixels
text_color - The color to render the text. An optional 4 number
as alpha is accepted
use_shadow - Whether to render or not a shadow for the text
shadow_color - the color for the shadow
fuzzy_shadow - Whether to blur the rendered shadow or not.
shadow_offset - shadow offset in both x and y directions relative
to the text.
width - Button width in pixels. Automatic if not specified.
height - Button height in pixels. Equal to the one of the
button template image, if not specified
left_width - Instead of taking the template's entire left
half as button cap, use this many pixels. The remaining pixel columns
up to the ones that make up the right button cap will be replicated/
resized as needed to create the middle section.
right_width - The same as left_width, but for the right button cap
center_slice - Explicit slice of pixel columns on the image template
that will be replicated as the button center. If not specified, it
it is auto computed from the left_width and right_width values. (NB,
if those are also empty, the central pixel column is just stretched
over to make for the central button area)
align = Text alignment. Allowed values= LEFT, CENTER, RIGHT
(v.1.2, not implemented for command line mode - use 0,1 or 2 for now)
when used as cgi, the extra parameter "image_type" specifies which image
type will be generated. From the command line, the first parameter is the
output file name, and file_type is based on its extension.
ex.: "png", "jpeg", "gif" -
Example of CGI usage:
The various parameters are encoded in the src url!
Example for command line usage:
./dynabutton.py crewind.png cloud.png REWIND text_color:0,0,0 left_width:15
The extra "display" parameters attempts to show the result on the screen.
Python imaging library uses the 'xv' app by default to that. You can
symbolic link another app to xv if you prefer.
More information about the Image-SIG