use strict; use warnings; use Time::HiRes 'time'; my $fn = 'test.tif'; { print "\tTesting Magick:\n"; use Image::Magick; my $img = Image::Magick-> new; $img-> Read( $fn ); for ( qw/ None LZW Zip /) { my $t = time; $img-> Set( compression => $_ ); my $blob = $img-> ImageToBlob; printf "Compression: %s \t Size: %d \t Time: %.2f\n", $_, length $blob, time - $t; } } { print "\tTesting Imager:\n"; use Imager; my $img = Imager-> new( file => $fn ); for ( qw/ none lzw zip /) { my $t = time; my $blob; $img-> write( data => \$blob, type => 'tiff', tiff_compression => $_ ); printf "Compression: %s \t Size: %d \t Time: %.2f\n", $_, length $blob, time - $t; } } __END__ Testing Magick: Compression: None Size: 30063788 Time: 0.20 Compression: LZW Size: 16156294 Time: 1.11 Compression: Zip Size: 13868590 Time: 11.86 Testing Imager: Compression: none Size: 30000294 Time: 0.32 Compression: lzw Size: 26470736 Time: 1.30 Compression: zip Size: 17199450 Time: 3.98 #### my $t = time; $img-> Set( compression => 'Zip' ); # default compression level printf "Size: %d \t Time: %.2f\n", length $img-> ImageToBlob, time - $t; $t = time; $img-> Set( compression => 'Zip', quality => 10 ); printf "Size: %d \t Time: %.2f\n", length $img-> ImageToBlob, time - $t; __END__ Size: 13868590 Time: 11.41 Size: 15694516 Time: 1.92