By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,044 Members | 1,155 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,044 IT Pros & Developers. It's quick & easy.

Error Creating an Image from an Uploaded File

P: n/a
I was hopeing someone could help me out here. Been stumped on this
one all day.

This function
1. Checks uploaded files.
2. Creates two resized images from each (a full size, and a
thumbnail).
3. Returns an array with a bool (false if the upload failed), and an
error message.

I am having trouble createing a copy of the image from the functions
imagecreatefrom*

Here is the function:

<?php
function process_images() {
//options
$max_bytes = 65536; // max file size
$max_h = 425; // maximum hieght for images
$max_w = 425; // maximum width for images
$t_h = 125; // max hieght for thumbnails
$t_w = 50; // max width for thumbnails
$max = 2; // max number of images

$i = 1;
while((list($k,$err) = each($_FILES['image']['error'])) and $i<=
$max) {
//check for an error
if($err != UPLOAD_ERR_OK) { return array(false,"There was an
error uploading Image #$i."); }
//TODO: Need better error message for errors here

//get file information
$name = $_FILES['image']['name'][$k];
$type = $_FILES['image']['type'][$k];
$temp = $_FILES['image']['tmp_name'][$k];
$size = $_FILES['image']['size'][$k];

//check that this file is an uploaded file
if(!is_uploaded_file($temp)) { return array(false,"There was
an error uploading Image #$i."); }
//check file size
if($size $max_bytes) { return array(false, "Image #$i
exceeds maximum size"); }

//check type and create a new image based off it
switch($type) {
//jpeg
case "image/pjpeg" :
case "image/jpeg" :
case "image/jpg" : $new_img =
imagecreatefromjpeg($temp); break;

//png
case "image/x-png" :
case "image/png" : $new_img = imagecreatefrompng($temp);
break;

//gif
case "image/gif" : $new_img = imagecreatefromgif($temp);
break;

//unrecognized format
default : return array(false, "Image #$i must be in jpeg,
gif, or png format.");
}

#no matter what image I put in here .. it always fails here
if(!$new_image) { return array(false, "Error Creating Image #
$i from $temp."); }

//get the original image size
list($w, $h) = getimagesize($temp);

//caluclate scale percentage
$perc = min($max_w/$w, $max_h/$h);
$thumb_p = min($t_w/$w, $t_h/$h);
//calucalte new dimensions
$new_w = round($perc * $w);
$new_h = round($perc * $h);
$thumb_w = round($thumb_p * $w);
$thumb_h = round($thumb_p * $h);

//create a new image with those dimensions
$res_img = imagecreatetruecolor($new_w, $new_h);
$thumb_img = imagecreatetruecolor($thumb_w, $thumb_h);
//resize now
imagecopyresampled($res_img, $new_img, 0,0,0,0, $new_w,
$new_h, $w,$h);
imagecopyresampled($thumb_img, $new_img, 0,0,0,0, $thumb_w,
$thumb_h, $w,$h);
//save the images
$new_name = time();
imagejpeg($res_img, "img/".$new_name.".jpg");
imagejpeg($thumb_img, "img/thumbs/".$new_name.".jpg");
//free memory
imagedestroy($res_img);
imagedestroy($thumb_img);
imagedestroy($new_image);

$i++;
}

return array(true,'');
}
?>

The functions: imagecreatefromjpeg(), imagecreatefrompng(), and
imagecreatefromgif() all seem to be returning false. Anyone have any
suggestions?

Thanks,
Chris F.

Feb 5 '07 #1
Share this Question
Share on Google+
8 Replies


P: n/a

While debugging, you should also print $type, since error might just lie
there.
Feb 5 '07 #2

P: n/a
On Feb 5, 2:44 pm, "ctiggerf" <ctigg...@gmail.comwrote:
I was hopeing someone could help me out here. Been stumped on this
one all day.

This function
1. Checks uploaded files.
2. Creates two resized images from each (a full size, and a
thumbnail).
3. Returns an array with a bool (false if the upload failed), and an
error message.

I am having trouble createing a copy of the image from the functions
imagecreatefrom*

Here is the function:

<?php
function process_images() {
//options
$max_bytes = 65536; // max file size
$max_h = 425; // maximum hieght for images
$max_w = 425; // maximum width for images
$t_h = 125; // max hieght for thumbnails
$t_w = 50; // max width for thumbnails
$max = 2; // max number of images

$i = 1;
while((list($k,$err) = each($_FILES['image']['error'])) and $i<=
$max) {
//check for an error
if($err != UPLOAD_ERR_OK) { return array(false,"There was an
error uploading Image #$i."); }
//TODO: Need better error message for errors here

//get file information
$name = $_FILES['image']['name'][$k];
$type = $_FILES['image']['type'][$k];
$temp = $_FILES['image']['tmp_name'][$k];
$size = $_FILES['image']['size'][$k];

//check that this file is an uploaded file
if(!is_uploaded_file($temp)) { return array(false,"There was
an error uploading Image #$i."); }
//check file size
if($size $max_bytes) { return array(false, "Image #$i
exceeds maximum size"); }

//check type and create a new image based off it
switch($type) {
//jpeg
case "image/pjpeg" :
case "image/jpeg" :
case "image/jpg" : $new_img =
imagecreatefromjpeg($temp); break;

//png
case "image/x-png" :
case "image/png" : $new_img = imagecreatefrompng($temp);
break;

//gif
case "image/gif" : $new_img = imagecreatefromgif($temp);
break;

//unrecognized format
default : return array(false, "Image #$i must be in jpeg,
gif, or png format.");
}

#no matter what image I put in here .. it always fails here
if(!$new_image) { return array(false, "Error Creating Image #
$i from $temp."); }

//get the original image size
list($w, $h) = getimagesize($temp);

//caluclate scale percentage
$perc = min($max_w/$w, $max_h/$h);
$thumb_p = min($t_w/$w, $t_h/$h);
//calucalte new dimensions
$new_w = round($perc * $w);
$new_h = round($perc * $h);
$thumb_w = round($thumb_p * $w);
$thumb_h = round($thumb_p * $h);

//create a new image with those dimensions
$res_img = imagecreatetruecolor($new_w, $new_h);
$thumb_img = imagecreatetruecolor($thumb_w, $thumb_h);
//resize now
imagecopyresampled($res_img, $new_img, 0,0,0,0, $new_w,
$new_h, $w,$h);
imagecopyresampled($thumb_img, $new_img, 0,0,0,0, $thumb_w,
$thumb_h, $w,$h);
//save the images
$new_name = time();
imagejpeg($res_img, "img/".$new_name.".jpg");
imagejpeg($thumb_img, "img/thumbs/".$new_name.".jpg");
//free memory
imagedestroy($res_img);
imagedestroy($thumb_img);
imagedestroy($new_image);

$i++;
}

return array(true,'');}

?>

The functions: imagecreatefromjpeg(), imagecreatefrompng(), and
imagecreatefromgif() all seem to be returning false. Anyone have any
suggestions?

Thanks,
Chris F.


I did forget to mention that my php is compiled with GD support
sufficient enough to use the functions and I am using PHP Version
4.3.11 ...

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Feb 5 '07 #3

P: n/a
On Feb 5, 2:58 pm, "P Pulkkinen"
<perttu.POISTATAMA.pulkki...@POISTATAMA.elisanet.f iwrote:
While debugging, you should also print $type, since error might just lie
there.
I went ahead and added that debugging info and the type seems to be
reporting back correctly for all the types I tried.

Feb 5 '07 #4

P: n/a

"ctiggerf" <ct******@gmail.comkirjoitti
viestissä:11**********************@q2g2000cwa.goog legroups.com...
On Feb 5, 2:58 pm, "P Pulkkinen"
<perttu.POISTATAMA.pulkki...@POISTATAMA.elisanet.f iwrote:
>While debugging, you should also print $type, since error might just lie
there.
I went ahead and added that debugging info and the type seems to be
reporting back correctly for all the types I tried.
What's your error level reporting level, since imagecreatefromsomething
functions echo error message when they fail.
Feb 5 '07 #5

P: n/a
What's your error level reporting level, since imagecreatefromsomething
functions echo error message when they fail.
you could put to the beginning of script:

error_reporting(E_ALL);
Feb 5 '07 #6

P: n/a
On Feb 5, 3:37 pm, "P Pulkkinen"
<perttu.POISTATAMA.pulkki...@POISTATAMA.elisanet.f iwrote:
What's your error level reporting level, since imagecreatefromsomething
functions echo error message when they fail.

you could put to the beginning of script:

error_reporting(E_ALL);
Thanks for your quick replies.
I turned the error reporting on, (it wasn't set high enough to see the
notices) and it is reporting:

Notice: Undefined variable: new_image in /home/content/o/t/b/
otbadmin356/html/order.php on line 365

Which corresponds to the line after the switch statement:

if(!$new_image) { return array(false, "Error Creating Image #$i from
$temp - $type."); }

So I put some echos in to see if I was ever getting inside the switch
statement, and I am. However I do not see any output from the
imagecreatefrom functions.

Feb 5 '07 #7

P: n/a
Rik
ctiggerf <ct******@gmail.comwrote:
Notice: Undefined variable: new_image in /home/content/o/t/b/
otbadmin356/html/order.php on line 365
$new_img != $new_image

--
Rik Wasmus
Feb 5 '07 #8

P: n/a
On Feb 5, 4:40 pm, Rik <luiheidsgoe...@hotmail.comwrote:
ctiggerf <ctigg...@gmail.comwrote:
Notice: Undefined variable: new_image in /home/content/o/t/b/
otbadmin356/html/order.php on line 365

$new_img != $new_image

--
Rik Wasmus
DOH!!

Nothing like spending a whole day looking for a typo. I love
programming.

Thanks for the help, it works great now.
--Chris

Feb 5 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.