The SMALLLIGHT is a module of Apache2 which provides a dynamic image transformation.
Latest commit 63d1c73 Jul 22, 2013 @yamac Merge pull request #2 from cubicdaiya/issues/invalid_option
fix invalid option pass through
Failed to load latest commit information.
ChangeLog changed for release-1.1.1 Jun 23, 2011
LICENSE Added some files related for license. Feb 8, 2011
README Changed configure section and some addition for pattern string section. Feb 8, 2011
README.JA Changed configure section and some addition for pattern string section. Feb 8, 2011
README.imlib2 Added some files related for license. Feb 8, 2011
configure changed for release-1.1.1 Jun 23, 2011
mod_small_light.c Fixed error handling Jun 23, 2011
mod_small_light.h Changed memory allocation flow, Added mpm detection. Feb 8, 2011
mod_small_light_dummy.c fix invalid identifier May 28, 2013
mod_small_light_ext_jpeg.c fix undefined behavior warnings Jun 2, 2013
mod_small_light_ext_jpeg.h git-svn-id: 31ed2c5f-a43… Oct 4, 2010
mod_small_light_imagemagick.c Merge pull request #3 from cubicdaiya/issues/typo Jun 2, 2013
mod_small_light_imlib2.c fix bug(num_writes is never under zero because it is unsigned value) Jun 2, 2013


mod_small_light - Dynamic image transformation module for Apache2

The mod_small_light provides a dynamic image transformation.

Build Environment

Supported Platforms: GNU/Linux, and other operating systems support GCC.


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

 ./configure --without-imlib2
 ./configure --without-Wand

And then, make and make install to complete installation.

 sudo make install


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/(.+)$$1 [P,L]
   RewriteRule ^/resize/(.+)$ /small_light(dw=400,dh=400,ds=s)/$1 [P,L]
   RewriteRule ^/small_light[^/]*/(.+)$$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().

    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
    unsharp   e=imagemagick,unsharp=radius,sigma,amount,threshold
    blur      e=imlib2,blur=radius
    *1 of=gif is supported only when e=imagemagick
    *2 inhexif is supported only when e=imlib2

    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> <PATTERN STRING>

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,q=80) * 'q' will be overridden to 80.