|  | Posted by ctiggerf on 02/05/07 19:44 
I was hopeing someone could help me out here.  Been stumped on thisone 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.
  Navigation: [Reply to this message] |