View Single Post
Old 11-19-2012, 07:42 AM   PM User | #2
minder
Banned

 
Join Date: Oct 2012
Posts: 81
Thanks: 0
Thanked 4 Times in 4 Posts
minder can only hope to improve
This script resizes an image to fit within a box with user defined length and width while maintaining the image's original aspect ratio.

I wouldn't recommend resizing the image using javascript because it won't work in browsers where js is turned off for some reason. But if you must resize using js you can convert the logic to js code.

PHP Code:
<?php
    
/*************************************************************************
    This script resizes an image so that it fits within a user specified
    max_width and max_height.
    
    The script automatically detects jpg, png and gif image format files.
    
    Input Parameters:
    -----------------    
    pic         = path to image to be resized.
    maxWidth     = maximum width.
    maxHeight     = maximum height.
    *************************************************************************/
    
    //get the passed data, validate it and assign it to variables
    
    
$image $_GET['pic'];
    
    if(!isset(
$_GET['maxWidth'])        || !isset($_GET['maxHeight']) ||
       !
is_numeric($_GET['maxWidth'])     || empty($_GET['maxWidth'])   || 
       !
is_numeric($_GET['maxHeight']) || empty($_GET['maxHeight'])  || 
       
$_GET['maxWidth']  <= || 
       
$_GET['maxHeight'] <= 0)
    {
        
$max_width 70;        //default value
        
$max_height 70;        //default value
    
}
    else
    {
        
$max_width  $_GET['maxWidth'];
        
$max_height $_GET['maxHeight'];
    }

    
//get the original image attributes
    
$size         GetImageSize($image);
    
$width         $size[0];
    
$height     $size[1];
    
$imageType     $size[2];
    
    
//scaling factors
    
$xRatio $max_width $width;        
    
$yRatio $max_height $height;
    
    
//calculate the new width and height
    
if($width <= $max_width && $height <= $max_height)    //image does not need resizing
    
{
        
$toWidth     $width;
        
$toHeight     $height;
    }
    else if(
$xRatio $height $max_height)
    {
        
$toHeight round($xRatio $height);
        
$toWidth  $max_width;        
    }
    else
    {
        
$toWidth round($yRatio $width);
        
$toHeight  $max_height;
    }
    
    
//create the resized image
    //Type of image  1=GIF  2=JPG 3=PNG 4=SWF 5=PSD 6=BMP 7=TIFF(intel byte order) 8=TIFF(motorola byte order) 9=JPC 10=JP2 11=JPX 12=JB2 13=SWC 14=IFF 15=WBMP 16=XBM
    
    
$newImage ImageCreateTrueColor($toWidth,$toHeight);    //create the new image canvas
    
    
switch ($imageType)
    {       
        case 
1:        //gif file
            
$oldImage ImageCreateFromGif($image);
            break;
        
        case 
3:        //png file
            
$oldImage ImageCreateFromPng($image);
            break; 
            
        default:    
//jpg file
            
$oldImage ImageCreateFromJpeg($image);
            break;      
    }
   
    
ImageCopyResampled($newImage,$oldImage,0,0,0,0,$toWidth,$toHeight,$width,$height);    //resize the new image
    
    //output the new resized image
    
    
switch ($imageType)
    {       
        case 
1:        //gif file
            
header('Content-type: image/gif');
            
ImageGif($newImage);
            break; 
            break;
        
        case 
3:        //png file
            
header('Content-type: image/png');
            
ImagePng($newImage);
            break; 
        
        default:    
//jpg file
            
header('Content-type: image/jpeg');
            
ImageJpeg($newImage);
            
//ImageJpeg($newImage,'newImage.jpg', -1);
            
break;      
    }
 
     
//clean up resources
    
ImageDestroy($oldImage);
    
ImageDestroy($newImage);

?>
minder is offline   Reply With Quote