this has got me baffled: imagesx() and imagesy() reporting the wrong size?
| From: | Ben | Date: | Sun, 15 Nov 2009 20:07:16 +0000 |
| Subject: | this has got me baffled: imagesx() and imagesy() reporting the wrong size? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-299848@lists.php.net to get a copy of this message | ||
On my site I have a web form for users to upload graphics, however there are constraints on the size allowed. Recently, a user has been having problems, because the code is reporting the wrong size - a size too small to be allowed! They sent me a copy of the image so I could confirm the error, and I have: even though the image is a 32x32 image (2-frame animated GIF, if it matters), imagesx() and imagesy() report that the image is 30x24! I have never had this problem before (or, at least, no one has reported it to me) so I'm tempted to think that it's a bug in PHP, or (more likely) I am missing something crucial...
The relevant code:
if($itype == 'image/gif')
$img = imagecreatefromgif($_FILES['file']['tmp_name']);
else if($itype == 'image/png' || $itype == 'image/x-png')
$img = imagecreatefrompng($_FILES['file']['tmp_name']);
// note: we do not get here if($itype != 'image/gif' && $itype !=
// 'image/png' && $itype != 'image/x-png'), so the problem should not
// lie with an image type we were not expecting
$w = imagesx($img);
$h = imagesy($img);
if(!(($w == 48 && $h == 48) || ($w >= 4 && $w <= 48 && $h == 32)))
{
$error = 'The graphic\'s dimensions are not correct (' .
$w . 'x' . $h . ').';} else { ... } yes, the logic wants either a 48x48 graphic, or a 4x32 to 48x32 graphic. I'd be happy to link the animated GIF in question... just in case there was a problem with the GIF itself, I tried opening it up in an (old) version of Fireworks, and re-exporting it, but the problem remains. besides the possibility of a bug in PHP, I'm wondering if I need to handle animated GIFs differently, or something like that? but again, this code has been running for... 3ish years without a problem like this ever being reported... quite confusing.