0) $width = $_REQUEST['w']; if (isset($_REQUEST['h']) && is_numeric($_REQUEST['h']) && $_REQUEST['h'] > 0) $height = $_REQUEST['h']; if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){ move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); $allowed_types = array("bmp","wbmp","jpeg","jpg","gif","png","xpm"); $pathinfo = pathinfo($_FILES['ulimage']['name']); if (!in_array(strtolower($pathinfo['extension']), $allowed_types)) echo ""; resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height); $hasupload = TRUE; } function resizeImage($srcimage, $destimage, $width, $height) { if (!file_exists(realpath($srcimage))) return; $srcpathinfo = pathinfo($srcimage); $srcext = strtolower($srcpathinfo['extension']); $destpathinfo = pathinfo($destimage); $destext = strtolower($destpathinfo['extension']); $size = getimagesize( $srcimage ); // Get the size of the original image into an array [0]=> width, [1]=> height $image = null; $canvas = imagecreatetruecolor( $width, $height ); // Prepare canvas // Create a new image in the memory from the file switch ($srcext) { case 'wbmp': case 'bmp': $image = imagecreatefromwbmp($srcimage); break; case 'jpg': case 'jpeg': $image = imagecreatefromjpeg($srcimage); break; case 'png': $image = imagecreatefrompng($srcimage); break; case 'gif': $image = imagecreatefromgif($srcimage); break; case 'xpm': $image = imagecreatefromxpm($srcimage); break; default: return; } // Calculate dimensions $widthratio = $size[0]/$width; $heightratio = $size[1]/$height; $dimensions = array( 'ratio' => $widthratio, 'source_cropwidth' => 0, 'source_cropheight' => 0, 'source_offsetx' => 0, 'source_offsety' => 0 ); if ($heightratio < $widthratio) $dimensions['ratio'] = $heightratio; // let say image is 1200*800, then: // widthratio = 1200/400 = 3 // heightratio = 800/300 = 2.66 // since there is less height than width, the max scale we can do is 2.66, then // the targetwidth to crop = 400 * 2.66 // the targetheight to crop = 300 * 2.66 // the offset width = (1200 - (2.66 * 400))/2 = 68 // the offset height = (800 - (2.66 * 300))/2 = 1 $dimensions['source_width'] = $size[0]; $dimensions['source_height'] = $size[1]; $dimensions['source_cropwidth'] = $width * $dimensions['ratio']; $dimensions['source_cropheight'] = $height * $dimensions['ratio']; $dimensions['source_offsetx'] = ($size[0] - $dimensions['source_cropwidth']) / 2; $dimensions['source_offsety'] = ($size[1] - $dimensions['source_cropheight']) / 2; imagecopyresampled($canvas, $image, 0, 0, $dimensions['source_offsetx'], $dimensions['source_offsety'], $width, $height, $dimensions['source_cropwidth'], $dimensions['source_cropheight']); switch ($destext) { case 'jpg': case 'jpeg': imagejpeg( $canvas, $destimage ); break; case 'png': imagepng( $canvas, $destimage ); break; case 'gif': imagegif( $canvas, $destimage ); break; case 'wbmp': case 'bmp': imagewbmp( $canvas, $destimage ); break; } imagedestroy( $canvas ); imagedestroy( $image ); } ?> PHP Image Resize Function
download me at http://t.wits.sg

Usage:


	if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){
		move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']);
		$allowed_types = array("bmp","wbmp","jpeg","jpg","gif","png","xpm");
		$pathinfo = pathinfo($_FILES['ulimage']['name']);
		if (!in_array(strtolower($pathinfo['extension']), $allowed_types))
			echo "<script>alert('Invalid file type');</script>";
		resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height);
		$hasupload = TRUE;
	}

Image Upload And Resize Example

Download the PHP Source here
by

Code:


function resizeImage($srcimage, $destimage, $width, $height) {
		if (!file_exists(realpath($srcimage)))
			return;
		
		$srcpathinfo 	= pathinfo($srcimage);
		$srcext 		= strtolower($srcpathinfo['extension']);
		$destpathinfo 	= pathinfo($destimage);
		$destext 		= strtolower($destpathinfo['extension']);
		$size 			= getimagesize( $srcimage );				// Get the size of the original image into an array [0]=> width, [1]=> height
		$image			= null;
		$canvas 		= imagecreatetruecolor( $width, $height );	// Prepare canvas
		
		// Create a new image in the memory from the file 
		switch ($srcext) { 
			case 'wbmp':
			case 'bmp':
				$image = imagecreatefromwbmp($srcimage);
				break;
			case 'jpg':
			case 'jpeg':
				$image = imagecreatefromjpeg($srcimage);
				break;
			case 'png':
				$image = imagecreatefrompng($srcimage);
				break;
			case 'gif':
				$image = imagecreatefromgif($srcimage);
				break;
			case 'xpm':
				$image = imagecreatefromxpm($srcimage);
				break;
			default:
				return;
		}
		
		// Calculate dimensions
		$widthratio		= $size[0]/$width;
		$heightratio	= $size[1]/$height;
		$dimensions 	= array(
						'ratio' 			=> $widthratio,
						'source_cropwidth' 	=> 0,
						'source_cropheight' => 0,
						'source_offsetx' 	=> 0,
						'source_offsety' 	=> 0
						);
		
		if ($heightratio < $widthratio)
			$dimensions['ratio'] 			= $heightratio;

		// let say image is 1200*800, then:
		// widthratio = 1200/400 = 3
		// heightratio = 800/300 = 2.66
		// since there is less height than width, the max scale we can do is 2.66, then
		// the targetwidth to crop = 400 * 2.66
		// the targetheight to crop = 300 * 2.66
		// the offset width = (1200 - (2.66 * 400))/2 = 68
		// the offset height = (800 - (2.66 * 300))/2 = 1
		
		$dimensions['source_width'] 		= $size[0];
		$dimensions['source_height'] 		= $size[1];
		$dimensions['source_cropwidth'] 	= $width * $dimensions['ratio'];
		$dimensions['source_cropheight'] 	= $height * $dimensions['ratio'];
		$dimensions['source_offsetx'] 		= ($size[0] - $dimensions['source_cropwidth']) / 2;
		$dimensions['source_offsety'] 		= ($size[1] - $dimensions['source_cropheight']) / 2;
		
		imagecopyresampled($canvas, $image, 0, 0, $dimensions['source_offsetx'], $dimensions['source_offsety'], $width, $height, $dimensions['source_cropwidth'], $dimensions['source_cropheight']);
		
		switch ($destext) {
			case 'jpg':
			case 'jpeg':
				imagejpeg( $canvas, $destimage );
				break;
			case 'png':
				imagepng( $canvas, $destimage );
				break;
			case 'gif':
				imagegif( $canvas, $destimage );
				break;
			case 'wbmp':
			case 'bmp':
				imagewbmp( $canvas, $destimage );
				break;
		}
		
		imagedestroy( $canvas );
		imagedestroy( $image );
	}