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

The following piece of script to get the width and height of a GIF file works perfectly. use GD; $file = "$html_root/file1.gif"; open (IMAGE, $file) || &sys_error("Can't open $file: $!"); $im = newFromGif GD::Image(IMAGE) || &sys_error("Can't create image from $file: $!"); close IMAGE; ($im_width,$im_height) = $im->getBounds(); However, when I tried to use the following script to get the width and height of a JPEG file, I got a "Premature End of Script Header" server error. Does anyone know what is wrong with this script? use GD; $file = "$html_root/file2.jpg"; open (IMAGE, $file) || &sys_error("Can't open $file: $!"); $im = newFromJpeg GD::Image(IMAGE) || &sys_error("Can't create image from $file: $!"); close IMAGE; ($im_width,$im_height) = $im->getBounds();

Replies are listed 'Best First'.
(jcwren) Re: Using GD.pm
by jcwren (Prior) on Jul 18, 2000 at 18:43 UTC
    Reformatted because I'm bored at work.

    The following piece of script to get the width and height of a GIF file works perfectly.
    use GD; $file = "$html_root/file1.gif"; open (IMAGE, $file) || &sys_error("Can't open $file: $!"); $im = newFromGif GD::Image(IMAGE) || &sys_error("Can't create image fr +om $file: $!"); close IMAGE; ($im_width,$im_height) = $im->getBounds();
    However, when I tried to use the following script to get the width and height of a JPEG file, I got a "Premature End of Script Header" server error. Does anyone know what is wrong with this script?
    use GD; $file = "$html_root/file2.jpg"; open (IMAGE, $file) || &sys_error("Can't open $file: $!"); $im = newFromJpeg GD::Image(IMAGE) || &sys_error("Can't create image f +rom $file: $!"); close IMAGE; ($im_width,$im_height) = $im->getBounds();


    --Chris

    e-mail jcwren
Re: Using GD.pm
by lhoward (Vicar) on Jul 18, 2000 at 20:51 UTC
    I believe that GD doesn's support jpg format. If you want image height/width there are easier ways of doing it such as the Image::Info, Image::Size and Image::Magick modules. (Image::Magick is way overkill if you only need height and width, but it is the swiss-army knife of perl image manipulation modules).
      Nope! GD supports jpeg just fine... At least, this works for me:
      use GD; open(IMAGE, 'foo.jpg') or die("Can't open foo.jpg: $!"); my $im = newFromJpeg GD::Image(IMAGE) or die("Can't create image from foo.jpg: $!"); my ($w,$h) = $im->getBounds(); close(IMAGE); print "foo.jpg is $w x $h\n"; ^d foo.jpg is 1024 x 768
      I guess it might help if our GD-using-AM-poster ran the script from console first, or at least used CGI::Carp instead of just reporting the 500 error... That way we might actually know what the error was, and not just know that there was an error. Oh well, the above works fine for me.

      #!/home/bbq/bin/perl
      # Trust no1!