Apache-ImgIndex
view release on metacpan or search on metacpan
ImgIndex.pm view on Meta::CPAN
package Apache::ImgIndex;
use strict;
use Apache2;
#use Apache::compat;
use Apache::RequestRec;
use Apache::RequestIO;
use Apache::Const qw(:common HTTP_OK);
use Apache::Log;
use APR::Const qw(:filetype);
use APR::Finfo;
use Image::Magick ();
use DirHandle ();
use FileHandle ();
use File::Basename qw(fileparse);
use vars qw(%gOptions @gOutput $gOutputStarted $VERSION);
$VERSION = 0.02;
%gOptions = (
'thumb-size' => '100x75', # set thumbnail size
ImgIndex.pm view on Meta::CPAN
(jpg => 'image/jpeg', gif => 'image/gif', png => 'image/png');
my ($name, $path, $ext) = fileparse($r->filename, qr{\.\w*$});
my($w, $h) = split('x', $gOptions{'thumb-size'});
$name =~ s/^\.//g;
$path =~ s/\/$//g;
$ext =~ s/^\.//g;
(my $imgName = $name) =~ s/-thumb$//i;
my($thumbName) = "$name.$ext";
my($Img) = Image::Magick->new();
my($tw, $th) = (0, 0);
if(-f "$path/$thumbName") {
($tw, $th) = $Img->Ping("$path/$thumbName");
}
# build the thumbnail if it doesn't exist
if( ($w != $tw && $h != $th) || $gOptions{'force'} ) {
$Img->Read("$path/../$imgName.$ext");
$Img->Resize(geometry=>"$gOptions{'thumb-size'}");
ImgIndex.pm view on Meta::CPAN
# only allow scaling to 25% and 200% of image size
if($in{'scale'} < -75) { $in{'scale'} = -75 };
if($in{'scale'} > 100) { $in{'scale'} = 100 };
if(%in) {
my($tmpfile) = "/tmp/$name." . time . ".$$.$ext";
my $scale = $in{'scale'} + 100;
my($Img) = Image::Magick->new;
$Img->Read($imgfile);
$Img->Rotate(degrees=>$in{'rot'}) if($in{'rot'});
$Img->Scale(geometry=>"${scale}%x${scale}%") if($in{'scale'});
$Img->Write("$tmpfile");
my($fh) = FileHandle->new("$tmpfile");
unless($fh) {
$r->log_error("Couldn't open file '$tmpfile'");
return SERVER_ERROR;
( run in 1.273 second using v1.01-cache-2.11-cpan-beeb90c9504 )