[Zope] ANN: VarImage 2.3.2 Released
Terry Hancock
hancock at anansispaceworks.com
Mon Jun 21 17:50:47 EDT 2004
Version 2.3.2 includes the large cache-optimization patch
written by Eric Pollman which reportedly can improve
performance by 10X or more in certain test conditions.
I have tested it on Zope 2.5.1 and Zope 2.6.4 (on FreeBSD
and Debian Linux platforms, respectively), but it probably
works on later Zopes and any platform on which PIL is
available.
This also fixes a bug with handling width and height
attributes, should they be set to strings instead of ints,
which avoids some annoying editing problems.
Get it from the Narya project at SourceForge:
http://sourceforge.net/projects/narya-project
Cheers,
Terry
From the README.txt file:
VarImage 2.3
VarImage means "variable image". It provides a way to
make
on-the-fly modifications to an image in Zope simply by
referring
to the correct URL.
[...]
Syntax
The URL-command is parsed as a chain of "operations" to be
applied
to the original image, separated by "." (period). Each
operation
is specified as an "operator", followed by zero or more
"arguments",
separated by "_".
Arguments and operators must be composed of only letters
and numbers
([A-Za-z0-9], note that "_" and "." are not legal because
they are
used as separators). Other than the fact that floating
point values
have to use "o" (the letter "o") instead of "." for the
decimal
point, this works well.
Colors are represented by strings, usually as hexadecimal
codes, with
a prefix of "x" and 6 hexadecimal characters.
Component images may be referred to by their unadorned
Zope ID, so
"myimage/components/mycomponent" is simply "mycomponent".
Note
that, to be useful, you have to use only letters and
numbers in
the name of components.
Each operation is applied in sequence, to the result of
the previous
operation, and then the final result is returned.
Examples
If you have a VarImage "shinobu_jpg", you can get it
in an exact size of 100x100 (regardless of the original
aspect)::
shinobu_jpg/s_100
or 100x50::
shinobu_jpg/s_100_50
or you can thumbnail it into a 70x50 space (the longer
dimension
will be determined by the specified limit, while the
smaller is
determine by the image aspect ratio -- i.e. the image will
"fit"
into the available 70x50 space)::
shinobu_jpg/f_70_50
or you can set the horizontal or vertical dimensions::
shinobu_jpg/h_85
shinobu_jpg/v_100
(The above examples are converted from the Version 1
docs).
You can also convert the image to PNG or GIF format::
shinobu_jpg/tn_100.png
shinobu_jpg/tn_100_200.gif
And do color effects, such as black-and-white::
shinobu_jpg/bw
or color-multiplication::
shinobu_jpg/mult_x0e5f00.png
shinobu_jpg/bw.R.gif
Special Commands
For a help page with a complete list of all currently
understood
operators, use::
shinobu_jpg/help
If you need to clear the cache and start over for some
reason (this
is necessary a lot when you're writing a new plugin)::
shinobu_jpg/clear_cache
[...]
How It Works
VarImage inherits from Zope's Image and ObjectManager
types, so
it is an image that also acts as a folder. The folder
contains
a Temporary Folder named "cache". When you query for a
modified
image, it first checks to see if the cache already
contains the
image. If so, it returns that. Otherwise, it uses Python
Imaging
Library to generate the image, and stores the result in
the
cache.
[...]
Writing Plugins
It is now trivial to add a plugin operator to VarImage,
and you
do not need any understanding of Zope to do this. You will
need
to understand how to manipulate and process images in
Python.
[...]
Author and Licensing
Terry Hancock wrote VarImage for Anansi Spaceworks. It may
be
redistributed under the terms of the Gnu Public License.
The
full text of the GPL is in the file LICENSE.txt in this
distribution.
--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks http://www.anansispaceworks.com
More information about the Zope
mailing list