#!/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 $!; my $image2 = $image; timethese( -5, { # 25/s # this is what we do on win32 systems before running the GD code, so scanning # is that much slower imager => sub { my $img = Imager->new; $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($image2); 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; }, } );