#!/usr/bin/perl use lib qw( /home/slim/slimserver7/CPAN /home/slim/slimserver7/CPAN/arch/5.8/i386-linux-thread-multi ); use strict; use Benchmark qw(timethese); use File::Slurp qw(read_file write_file); use Imager; use GD; my $file = shift or die "No file"; my $image = read_file($file) or die $!; timethese( -5, { # 12500/s imager => sub { my $img = Imager->new; eval { $img->read( data => $image ) or die $img->errstr; $img->write( data => \$image, type => 'jpeg', jpegquality => 100 ) or die $img->errstr; }; }, # 15/s gd => sub { GD::Image->trueColor(1); my $origImage = GD::Image->newFromJpegData($image); my $newImage = GD::Image->new(100,100); $newImage->saveAlpha(1); $newImage->alphaBlending(0); $newImage->filledRectangle(0, 0, 100, 100, 0x7f000000); $newImage->copyResampled( $origImage, 0, 0, 0, 0, 100, 100, $origImage->width, $origImage->height ); my $newImageData = $newImage->png; }, } );