84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php	
 | 
						|
/*
 | 
						|
	
 | 
						|
	// useful snippet http://ontosys.com/php/cache.html, but looks like it doesn't in this case
 | 
						|
	
 | 
						|
	$if_modified_since = preg_replace('/;.*$/', '', @$_SERVER['HTTP_IF_MODIFIED_SINCE']);
 | 
						|
	
 | 
						|
	$mtime = filemtime($fpath);
 | 
						|
	$gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
 | 
						|
 | 
						|
	if ($if_modified_since == $gmdate_mod) {
 | 
						|
		header("HTTP/1.0 304 Not Modified");
 | 
						|
	    exit;
 | 
						|
	}
 | 
						|
	
 | 
						|
	header("Last-Modified: $gmdate_mod");
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
function thumb_send($fpath) {
 | 
						|
	
 | 
						|
	$MAX = 100;
 | 
						|
	
 | 
						|
	// we support only jpeg's, png's and gif's
 | 
						|
	
 | 
						|
	$infos = getimagesize($fpath);
 | 
						|
	
 | 
						|
	
 | 
						|
	list($w, $h) = $infos;
 | 
						|
	
 | 
						|
	if ($w<=$MAX && $h<=$MAX) {
 | 
						|
		switch ($infos[2]) {
 | 
						|
			case 1: header('Content-Type: image/gif'); break;
 | 
						|
			case 2: header('Content-Type: image/jpeg'); break;
 | 
						|
			case 3: header('Content-Type: image/png'); break;
 | 
						|
		}
 | 
						|
		
 | 
						|
		readfile($fpath);
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	
 | 
						|
	switch($infos[2]) {
 | 
						|
		case 1: $image = imagecreatefromgif($fpath); break;
 | 
						|
		case 2: $image = imagecreatefromjpeg ($fpath); break;
 | 
						|
		case 3: $image = imagecreatefrompng($fpath);
 | 
						|
	}
 | 
						|
	
 | 
						|
	
 | 
						|
	if ($w>$h) {
 | 
						|
		
 | 
						|
		$ratio = $w/$h;
 | 
						|
		$new_width = $MAX;
 | 
						|
		$new_height = (int)($MAX/$ratio);
 | 
						|
		
 | 
						|
	} else {
 | 
						|
		$ratio = $h/$w;
 | 
						|
		$new_height = $MAX;
 | 
						|
		$new_width = (int)($MAX/$ratio);
 | 
						|
	}
 | 
						|
	
 | 
						|
	$scaled = imagecreatetruecolor($new_width, $new_height);
 | 
						|
	imagecopyresampled($scaled, $image, 0, 0, 0, 0, $new_width, $new_height, $infos[0], $infos[1]);
 | 
						|
	
 | 
						|
	
 | 
						|
	header('Content-Type: image/jpeg');	
 | 
						|
	imagejpeg($scaled);
 | 
						|
	
 | 
						|
	
 | 
						|
}
 | 
						|
	
 | 
						|
	if (isset($_GET['f'])) {
 | 
						|
	
 | 
						|
		$f = ABS_PATH . IMAGES_DIR . $_GET['f'];
 | 
						|
		if ( strpos ($f, '..') !== false)
 | 
						|
			return;
 | 
						|
		
 | 
						|
		if (file_exists($f)) {
 | 
						|
			thumb_send($f);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	exit();
 | 
						|
	
 | 
						|
?>
 |