——package
Image::GD::Thumbnail;
our
$VERSION
=
'0.041'
;
use
Carp;
use
strict;
use
warnings;
=head1 NAME
Image::GD::Thumbnail - produce thumbnail images with GD
=head1 SYNOPSIS
use GD;
use Image::GD::Thumbnail;
# Load your source image
open IN, 'E:/Images/test.jpg' or die "Could not open.";
my $srcImage = GD::Image->newFromJpeg(*IN);
close IN;
# Create the thumbnail from it, where the biggest side is 50 px
my ($thumb,$x,$y) = Image::GD::Thumbnail::create($srcImage,50);
# Save your thumbnail
open OUT, ">E:/Images/thumb_test.jpg" or die "Could not save ";
binmode OUT;
print OUT $thumb->jpeg;
close OUT;
__END__
=head1 DESCRIPTION
This module uses the GD library to create a thumbnail image with no side bigger than you specify.
The subroutine C<create> takes two arguments: the first is a GD image object,
the second is the size, in pixels, you wish the image's longest side to be.
It returns a new GD image object (the thumbnail), as well as the I<x> and I<y>
dimensions, as (integer) scalars.
=head1 PREREQUISITES
GD
=cut
sub
create {
my
(
$orig
,
$max
) = (
shift
,
shift
);
confess
"No image supplied"
unless
$orig
;
confess
"No scale factor or geometry"
unless
$max
;
my
(
$ox
,
$oy
) =
$orig
->getBounds();
my
(
$maxx
,
$maxy
);
if
((
$maxx
,
$maxy
) =
$max
=~ /^(\d+)x(\d+)$/i){
$max
= (
$ox
>
$oy
)?
$maxx
:
$maxy
;
}
else
{
$maxx
=
$maxy
=
$max
;
}
# my $r = ($ox>$oy) ? ($ox/$maxx) : ($oy/$maxy);
my
$r
= (
$ox
/
$maxx
) > (
$oy
/
$maxy
) ? (
$ox
/
$maxx
) : (
$oy
/
$maxy
);
my
$thumb
= GD::Image->new(
$ox
/
$r
,
$oy
/
$r
);
$thumb
->copyResized(
$orig
,0,0,0,0,
$ox
/
$r
,
$oy
/
$r
,
$ox
,
$oy
);
return
$thumb
,
sprintf
(
"%.0f"
,
$ox
/
$r
),
sprintf
(
"%.0f"
,
$oy
/
$r
);
}
1;
__END__
=head2 EXPORT
None by default.
=head1 AUTHOR
Lee Goddard <cpan -at- leegoddard -dot- net>
=head1 SEE ALSO
L<perl>, L<GD>.
=head1 COPYRIGHT
Copyright (C) Lee Godadrd 2001 ff, all rights reserved.
Available under the same terms as Perl itself.
=cut
__END__