All pastes #762895 Raw Edit

Miscellany

public php v1 · immutable
·published 2007-11-05 23:49 UTC
rendered paste body
<?php/* ----------------------------------------------------------------Script coming with JonDesign's SmoothGallery (http://smoothgallery.jondesign.net).It is an adapted version ofhttp://sneak.co.nz/2006/10/27/dynamic-image-resizing/which is itself an improvement of the original script fromTimothy Crowe's 'veryraw' website, with caching additions added by Trent Davies:http://veryraw.com/history/2005/03/image-resizing-with-php/Thanks to:Tim Novinger for finding the image extension problem (fixed by an strtolower())---------------------------------------------------------------- */$max_height = 300;$max_width = 300;if (isset($_GET["imgfile"])){	if (function_exists(get_magic_quotes_gpc) && get_magic_quotes_gpc())	{	    $image = stripslashes( $_GET["imgfile"] );	} else  $image = $_GET["imgfile"];	if (isset($_GET["max_width"])) { if($_GET["max_width"] < 2000) $max_width = $_GET["max_width"]; }	if (isset($_GET["max_height"])) { if($_GET["max_height"] < 1000) $max_height = $_GET["max_height"]; }		if (strrchr($image, '/')) {		$filename = substr(strrchr($image, '/'), 1); // remove folder references	} else {		$filename = $image;	}		$size = getimagesize($image);	$width = $size[0];	$height = $size[1];		// get the ratio needed	$x_ratio = $max_width / $width;	$y_ratio = $max_height / $height;		// if image already meets criteria, load current values in	// if not, use ratios to load new size info	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;	}		/* Caching additions by Trent Davies */	// first check cache	// cache must be world-readable	$resized = 'cache/'.$tn_width.'x'.$tn_height.'-'.$filename;	$imageModified = @filemtime($image);	$thumbModified = @filemtime($resized);		header("Content-type: image/jpeg");		// if thumbnail is newer than image then output cached thumbnail and exit	if($imageModified<$thumbModified) {		header("Last-Modified: ".gmdate("D, d M Y H:i:s",$thumbModified)." GMT");		readfile($resized);		exit;	}		// read image	$ext = strtolower(substr(strrchr($image, '.'), 1)); // get the file extension	switch ($ext) { 		case 'jpg':     // jpg			$src = imagecreatefromjpeg($image) or notfound();			break;		case 'png':     // png			$src = imagecreatefrompng($image) or notfound();			break;		case 'gif':     // gif			$src = imagecreatefromgif($image) or notfound();			break;		default:			notfound();	}		// set up canvas	$dst = imagecreatetruecolor($tn_width,$tn_height);		imageantialias ($dst, true);		// copy resized image to new canvas	imagecopyresampled ($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);		/* Sharpening adddition by Mike Harding */	// sharpen the image (only available in PHP5.1)	/*if (function_exists("imageconvolution")) {		$matrix = array(    array( -1, -1, -1 ),	                    array( -1, 32, -1 ),	                    array( -1, -1, -1 ) );		$divisor = 24;		$offset = 0;			imageconvolution($dst, $matrix, $divisor, $offset);	}*/		// send the header and new image	imagejpeg($dst, null, 90);	imagejpeg($dst, $resized, 90); // write the thumbnail to cache as well...		// clear out the resources	imagedestroy($src);	imagedestroy($dst);}?>