| Apache-GD-Thumbnail documentation | Contained in the Apache-GD-Thumbnail distribution. |
Apache::GD::Thumbnail - Apache module which generates on-the-fly thumbnails using GD and libjpeg
<Location /pics/thumbnails> SetHandler perl-handler PerlHandler Apache::GD::Thumbnail PerlSetVar ThumbnailMaxSize 75 PerlSetVar ThumbnailBaseDir "/usr/local/httpd/htdocs/pics" </Location>
Just what it looks like: creates on-the-fly thumbnails of jpeg images. There are two optional configuration directives.
Sets the maximum number of pixels to be used in the thumbnail for length or width (whichever is larger). Defaults to 50 if not specified.
Sets the directory that contains the images to be thumbnailed. Defaults to ".." if not specified.
<Location /pics/thumbnails> SetHandler perl-handler PerlHandler Apache::GD::Thumbnail PerlSetVar ThumbnailMaxSize 75 PerlSetVar ThumbnailBaseDir "/usr/local/httpd/htdocs/pics" </Location>
In the above example, the URI /pics/thumbnails/img001.jpg will cause the module to generate a 75xnn (where nn < 75) thumbnail of /usr/local/httpd/htdocs/pics/img001.jpg
<Location /pics/*/thumbs> SetHandler perl-handler PerlHandler Apache::GD::Thumbnail </Location>
In the above example, the URI /pics/foo/img001.jpg will cause the module to generate a 50xnn (nn < 50) thumbnail of DIRECTORYROOT/pics/somedirectory/img001.jpg As you can tell, this allows for much more dynamic configuration.
Copyright (c) 2002 Issac Goldstand - All rights reserved.
This library is free software. It can be redistributed and/or modified under the same terms as Perl itself.
GD(3)
| Apache-GD-Thumbnail documentation | Contained in the Apache-GD-Thumbnail distribution. |
package Apache::GD::Thumbnail; use strict; use warnings; use vars qw($VERSION @ISA); use GD; use Image::GD::Thumbnail; use Apache::File; use Apache::Constants qw(OK NOT_FOUND); BEGIN { $VERSION = "0.03"; $Apache::GD::Thumbnail::DEBUG=0; } ### ChangeLog # # 0.01 - Jan 21, 2002 - Started # 0.02 - Jan 22, 2002 - Removed some debug code that shouldn't have been there sub handler { my $r=shift; # Read config my $uri=$r->path_info; my $base=$r->dir_config("ThumbnailBaseDir") || "0"; if ($base eq "0") { my $subr=$r->lookup_uri($r->uri."/../../"); $base=$subr->filename; } $base=~s/\/$//; my $loc=$base.$uri; my $MaxSize=$r->dir_config("ThumbnailMaxSize") || 50; # Verify file if (!(-e $loc)) { return NOT_FOUND; } # Prepare response $r->set_last_modified((stat $loc)[9]); $r->content_type('image/jpeg'); if ((my $rc=$r->meets_conditions) != OK) { return $rc; } $r->send_http_header; if ($r->header_only) { return OK; } # Read JPEG my $fh=Apache::File->new($loc) || die ("Couldn't open $loc for reading: $!"); my $src=undef; $src=GD::Image->newFromJpeg(*{$fh}); $fh->close || die "Error closing $loc: $!"; warn $loc if _conf("DEBUG") > 0; #Create thumbnail my ($thumb,$x,$y)=Image::GD::Thumbnail::create($src,$MaxSize); $r->print($thumb->jpeg); return OK; } sub _conf($) { my $arg=shift; return eval("\$".__PACKAGE__."::".$arg); } 1; __END__ # Below is stub documentation for your module. You better edit it!