Date: Mon, 01 Apr 2002 18:53:19 +0200 From: Paul Everlund <tdv94ped@cs.umu.se> To: freebsd-questions@freebsd.org Subject: ImageMagick with Perl - conversion problem Message-ID: <3CA8907F.4DF85715@cs.umu.se>
next in thread | raw e-mail | index | archive | help
Hi all! A question not related to FreeBSD, but as maybe someone on the list has a solution to my problem here, I'll give it a try. People here seems to know a lot about various stuff, so that's why I'm posting it. Background ---------- I want to convert an image from some format (if it's an by me allowed format) to JPG, resize it if necessary, put a border around the image, and finally save the image in JPG- format. I've written a PERL-script that uses ImageMagick's Perl-module for this task. (I do not want to use convert.) It works ok for all images except TIFF. Error description ----------------- When converting TIFF to JPG (and even from TIFF to TIFF), the converted image shows vertical red-green-blue stripes in the image, all the way from left to right. This happens even if the image is not resized. Perl-script ----------- #!/usr/bin/perl use Image::Magick; $image = Image::Magick->new; $in = $ARGV[0]; # Image infile. $out = $ARGV[1]; # Image outfile. $w = $ARGV[2]; # Image width. $h = $ARGV[3]; # Image height. # Read the image from disk. $image->Read($in); # Check if valid image type. $type = $image->Get('magick'); if($type ne "TIFF" and $type ne "BMP" and $type ne "JPG" and $type ne "GIF" and $type ne "PNG") { print("error"); exit(1); } # Get image width and height. ($x, $y) = $image->Get('width', 'height'); # Calculate the aspect ratio. $aspectRatio = $y / $x; # Change x and y size if necessary. $sizeChanged = 0; if($x > $w) { $x = $w; $y = $x * $aspectRatio; $sizeChanged = 1; } if($y > $h) { $y = $h; $x = $y * $aspectRatio; $sizeChanged = 1; } # If the original size was wrong, then resize the image. if($sizeChanged == 1) { $image->Resize(width => $x, height => $y, filter => 'Cubic', blur => 1); } # Draw a border. $image->Border(width => 2, height => 2, fill => '#000000'); # Write the image to disk. $image->Write($out); print("ok"); exit(0); ----------------------- Any effort from anyone, trying to help me, is greatly appreciated! Thanks in advance! Best regards, Paul To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3CA8907F.4DF85715>