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'] <= 0 ||
$_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);
?>