PHP Simple Image resize & thumbnail generator


Here's an old image resize script, welcome to grab parts out of it and use as your own. Will need to hack it a bit to get it to work.

<?

$property_id 
1// for our little example here

define("_IMAGE_PATH","property_images/");
// max dimensions allowed:
define("_IMAGE_WIDTH","640");
define("_IMAGE_HEIGHT","480");
define("_IMAGE_THUMB_WIDTH","100");
define("_IMAGE_THUMB_HEIGHT","75");


// grab the path to the temporary file (image) that the user uploaded
$photo $_FILES['new_image']['tmp_name'];
// check if it exists
if(is_uploaded_file($photo)){
    
//the real image file name
    
$real_name strtolower($_FILES['new_image']['name']);
    
// image type based on image file name extension:
    
if(strstr($real_name,".png")){
        
$image_type "png";
    }else if(
strstr($real_name,".jpg")){
        
$image_type "jpg";
    }else if(
strstr($real_name,".gif")){
        
$image_type "gif";
    }else{
        die(
"Unsupported image type");
    }
    
    
// find the next image name we are going to save
    
$x=1;
    while(
true){
        
$image_name _IMAGE_PATH."${property_id}/${x}.jpg";
        if(!
is_file($image_name))break;
        
$x++;
    }
    
    
// start processing the main bigger image:
    
$max_width _IMAGE_WIDTH$max_height _IMAGE_HEIGHT;
    
$size getimagesize($photo);
    
$width $size[0];
    
$height $size[1];
    
$x_ratio $max_width $width;
    
$y_ratio $max_height $height;
    if((
$width <= $max_width)&&($height <= $max_height)){
        
$tn_width $width;
        
$tn_height $height;
    }else{
        if((
$x_ratio $height) < $max_height){
            
$tn_height ceil($x_ratio $height);
            
$tn_width $max_width;
        }else{
            
$tn_width ceil($y_ratio $width);
            
$tn_height $max_height;
        }
    }
    switch(
$image_type){
        case 
"png"$src=imagecreatefrompng($photo); break;
        case 
"jpg"$src=imagecreatefromjpeg($photo); break;
        case 
"gif"$src=imagecreatefromgif($photo); break;
    }
    
// destination resized image:
    
$dst imagecreatetruecolor($tn_width$tn_height);
    
// resize original image onto $dst
    
imagecopyresampled($dst$src0000$tn_width$tn_height$width$height);
    
// write the final jpeg image..
    
imagejpeg($dst$image_name100) or die("Error: your photo
    has not been saved. Please contact the administrator"
);
    
// time to clean up
    
imagedestroy($src);
    
imagedestroy($dst);
    
    
    
// and now we do it alll again for the thumbnail:
    
$max_width _IMAGE_THUMB_WIDTH$max_height _IMAGE_THUMB_HEIGHT;
    
$size GetImageSize($photo);
    
$width $size[0];
    
$height $size[1];
    
$x_ratio $max_width $width;
    
$y_ratio $max_height $height;
    if((
$width <= $max_width)&&($height <= $max_height)){
        
$tn_width $width;
        
$tn_height $height;
    }else{
        if((
$x_ratio $height) < $max_height){
            
$tn_height ceil($x_ratio $height);
            
$tn_width $max_width;
        }else{
            
$tn_width ceil($y_ratio $width);
            
$tn_height $max_height;
        }
    }
    switch(
$image_type){
        case 
"png"$src=imagecreatefrompng($photo); break;
        case 
"jpg"$src=imagecreatefromjpeg($photo); break;
        case 
"gif"$src=imagecreatefromgif($photo); break;
    }
    
$dst imagecreatetruecolor($tn_width$tn_height);
    
imagecopyresampled($dst$src0000$tn_width$tn_height$width$height);
    
$thumbfile $image_name ".thumb.jpg";
    if(
file_exists($thumbfile))unlink($thumbfile);
    
imagejpeg($dst$thumbfile100) or die("Error: your photo thumb has not been saved.
       Please contact the administrator"
);
    
imagedestroy($src);
    
imagedestroy($dst);
}
?>
Leave a Comment

Yes, send me an email when a new comment is posted.

The avatars shown next to comments are Gravatars. Click here to get a Gravatar account for free and any other site that supports it will show your avatar too!