modsmalllight - Dynamic image transformation module for Apache2
February 8, 2011 · View on GitHub
The mod_small_light provides a dynamic image transformation.
Build Environment
Supported Platforms: GNU/Linux, and other operating systems support GCC.
Build
Simply run the configure script with --with-apxs option for analyzing your environment automatically.
./configure --with-apxs=/usr/local/apache2/bin/apxs
Or you can specify the location of each imlib2-config and Wand-config by using --with options.
./configure --with-imlib2-config=/usr/local/imlib2/bin/imlib2-config ./configure --with-Wand-config=/usr/local/ImageMagick/bin/Wand-config
Or if you don't have a plan to use imlib2 or Wand, you can specify --without options.
./configure --without-imlib2 ./configure --without-Wand
And then, make and make install to complete installation.
make sudo make install
Usage
This module is implemented as an output filter. Use SetOutputFilter directive to activate it.
-
for local use.
RewriteRule ^/images/(.+) /your/local/images/\1 [L] RewriteRule ^/resize/(.+) /small_light(dw=400,dh=400,ds=s)/\1 [P,L] RewriteRule ^/small_light[^/]/(.+) /your/local/images/\1 <LocationMatch ^/small_light[^/]/> SetOutputFilter SMALL_LIGHT
-
for dedicated use.
RewriteRule ^/images/(.+) http://img.example.com/your/images/\1 [P,L] RewriteRule ^/resize/(.+) /small_light(dw=400,dh=400,ds=s)/\1 [P,L] RewriteRule ^/small_light[^/]/(.+) http://img.example.com/your/images/\1 [P,L] <LocationMatch ^/small_light[^/]/> SetOutputFilter SMALL_LIGHT
After you set the output filter, your apache transforms an image by transformation pattern specified in the URI.
Pattern string
The pattern string specifies as KEY=VALUE format in small_light().
KEY VALUE [TYPE OF VALUE]
sx source x [coord]
sy source y [coord]
sw source width [coord]
sh source height [coord]
dx destination x [coord]
dy destination y [coord]
dw destination width [coord]
dh destination height [coord]
da destination aspect ratio control [char]
(s=short-edge l=long-edge n=nope default:l)
ds destination scaling control [char]
(s=force scale n=no scale small image default:n)
cw canvas width [number]
ch canvas height [number]
cc canvas color(default:000000) [color]
bw border width [number]
bh border height [number]
bc border color(default:000000) [color]
pt pass through control [char]
(ptss:pass through when size of src-image < dest
ptls:pass through when size of src-image > dest
n:none default:n)
q quality(affects only jpeg or png, 0-100) [number]
of output format(jpeg,png,tiff,gif) [char] *1
inhexif inherit EXIF [char] *2
(n:none y:inherit default:n)
jpeghint enable jpeg loading optimization [char]
(n:none y:enable default:n)
info add transformation description to HTTP Header [number]
(0:none 1:add default:0)
p pattern name(see below)
e engine name(imlib2,imagemagick,dummy) [char]
sharpen e=imlib2,sharpen=radius
e=imagemagick,sharpen=radius,sigma
unsharp e=imagemagick,unsharp=radius,sigma,amount,threshold
blur e=imlib2,blur=radius
e=imagemagick,blur=radius,sigma
-------------------------------------------------------------------
*1 of=gif is supported only when e=imagemagick
*2 inhexif is supported only when e=imlib2
TYPE OF VALUE
-------------------------------------------------------------------
coord corrdinate. pixel, or percent by appending 'p'.
char character
number number
color rrggbb or rrggbbaa. ffffff as white, 000000 as black.
-------------------------------------------------------------------
- Pattern name
You can use named pattern by using SmallLightPatternDefine directive. This will reduce length and complexity of your URI.
SmallLightPatternDefine <PATTERN_NAME>
Some examples here.
SmallLightPatternDefine THUMB_SMALL sx=5p,sy=5p,sw=90p,sh=90p,dw=40,dh=40,da=l,cw=40,ch=40,cc=ffffff,q=80,of=jpeg SmallLightPatternDefine THUMB_MEDIUM sx=5p,sy=5p,sw=90p,sh=90p,dw=96,dh=96,da=l,cw=96,ch=96,cc=ffffff,q=80,of=jpeg SmallLightPatternDefine THUMB_LARGE sx=5p,sy=5p,sw=90p,sh=90p,dw=200,dh=200,da=l,cw=200,ch=200,cc=ffffff,q=80,of=jpeg
To use named pattern, simply small_light(p=PATTERN_NAME). The pattern could be overridden by patterns followed.
small_light(p=THUMB_SMALL)
OR
small_light(p=THUMB_SMALL,q=80) * 'q' will be overridden to 80.