Andre_br has asked for the wisdom of the Perl Monks concerning the following question:

Hello my esteemed code friends

I am designing a marketplace, kind of a classified, where the clients can post photos of their products. Itīs all there running pretty well, but the problem is that I donīt have control under the dimensions of the gif and jpegs they send me, and when I output them in a controlled width and height, I may be deforming the images - and this happens near to always!

Thereīs no problem in shrinking or increasing the image proporcionally, but the problem is that the height=xx and width=yy html tags I set should always have the same ratio between themselves, and they do not.

I thought about two solutions, all including some perl module I donīt know:

1) Inspect the saved image before printing out the html and defining the height and width with perl variables.

2) Before saving it, slicing it to the width/height ratio I desire.

You guys know how I can do that using some module?

Thanks a lot

André

  • Comment on Module for image inspection and manipulation

Replies are listed 'Best First'.
Re: Module for image inspection and manipulation
by pboin (Deacon) on May 17, 2005 at 01:12 UTC

    Image::Magick should be able to do everything you need. (If not, there are plenty of image-manipulation programs here).

Re: Module for image inspection and manipulation
by Adrade (Pilgrim) on May 17, 2005 at 01:29 UTC
    I thought I'd throw in the link to some PerlMagick documentation, since the one listed in CPAN seems to be outdated. You'll be able to do everything using the Perl mods, but thru the command line, you can also use the `convert` utility to change the dimensions of the image and the `identify` utility to find out what they are. It's a really nifty suite of programs!
    Good Luck,
      -Adam
      Hey guys, thanks a lot you all!

      I took a look at Image::Info, and it is just perfect for what I need, and quite simple also. Thanks Jhourcle.

      Cheers

      André

Re: Module for image inspection and manipulation
by jhourcle (Prior) on May 17, 2005 at 01:21 UTC

    If you just want the width/height, so you can set them proportionally, take a look at Image::Info (I've never used it myself... I've never needed to automate this)

Re: Module for image inspection and manipulation
by mrborisguy (Hermit) on May 17, 2005 at 01:25 UTC
    also, i've used GD, which has worked great for me
Re: Module for image inspection and manipulation
by zentara (Cardinal) on May 17, 2005 at 11:05 UTC
    Each of the Image modules does things a little bit differently, and if you have the time, try doing it with IM, and Imager, and see the difference. I prefer Imager myself. Usually in an html program, with it's pictures in tables, you will want to either constrain the thumbnail width or height to give a nice uniform looking table. With Imager you can do something like this:
    use Imager; my $image = Imager->new(); foreach my $pic (@pics){ $count++; my ($basename,$path,$suffix) = fileparse($pic,@exts); $image->open(file=>$pic) or die $image->errstr(); # my $w = $image->getwidth(); # my $h = $image->getheight(); # Create smaller version my $thumb = $image->scale(xpixels=>100); #$basename.="-t$suffix"; #keeps same ext $basename.='-t.jpg'; #make all thumbs as jpg print "Storing image as: $basename\n"; $thumb->write(file=>$basename, jpegquality=>30) or die $thumb->e +rrstr; # my $tw = $thumb->getwidth(); # my $th = $thumb->getheight(); }

    I'm not really a human, but I play one on earth. flash japh