| CGI-Application-PhotoGallery documentation | Contained in the CGI-Application-PhotoGallery distribution. |
CGI::Application::PhotoGallery::GD - GD-based graphics adaptor
use CGI::Application::PhotoGallery::GD;
my $lib = CGI::Application::PhotoGallery::GD->new;
my $pngdata = $lib->resize( $file, 100 );
creates a new CGI::Application::PhotoGallery::GD object.
Resizes $file to $sizex$size with transparent margins.
Loads $file and returns a GD::Image.
Returns the width and height of $file.
Brian Cassidy <bricas@cpan.org>
Copyright 2003-2009 by Brian Cassidy
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| CGI-Application-PhotoGallery documentation | Contained in the CGI-Application-PhotoGallery distribution. |
package CGI::Application::PhotoGallery::GD;
use strict; use warnings; use GD; our $VERSION = '0.15';
sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; }
sub resize { my $self = shift; my $file = shift; my $size = shift; my $image = $self->load( $file ); my ( $width, $height ) = $image->getBounds(); my $image2 = new GD::Image( $size, $size ); $image2->transparent( $image2->colorAllocate( 0, 0, 0 ) ); my $hnw = int( ( $height * $size / $width ) + 0.5 ); my $wnh = int( ( $width * $size / $height ) + 0.5 ); my @arg = ( $image, 0, 0, 0, 0, $size, $size, $width, $height ); if ( $width > $height ) { $arg[ 2 ] = int( ( $size - $hnw ) / 2 + 0.5 ); @arg[ 5, 6 ] = ( $size, $hnw ); } elsif ( $width < $height ) { $arg[ 1 ] = int( ( $size - $wnh ) / 2 + 0.5 ); @arg[ 5, 6 ] = ( $wnh, $size ); } $image2->copyResized( @arg ); return $image2->png; }
sub load { my $self = shift; my $file = shift; my $image; if ( $GD::VERSION < 1.30 ) { my ( $path, $type ) = $file =~ /(.*)\.([^.]+)/; my %new = ( gif => 'newFromGif', png => 'newFromPng', jpg => 'newFromJpeg' ); my $new = $new{ lc( $type ) }; $image = GD::Image->$new( $file ); } else { $image = GD::Image->new( $file ); } return $image; }
sub size { my $self = shift; my $file = shift; my $image = $self->load( $file ); return $image->getBounds(); }
1;