<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="code.xsl" ?>
<dns5.nl>
<voorbeeld>
<title>php verklein functie</title>
<verwijzende_link>http://www.dns5.nl/php/photo-album.html</verwijzende_link>
<programma_code>
<![CDATA[
<!-- de code begint vanaf hier.

<?
error_reporting(E_WARNING);
if(isset($_REQUEST['image'])) $plaatje=$_REQUEST['image'];
$breedte = 100;              
$hoogte = 100;             
$cache_dir = "cache";   
function haalnieuweafmetingen($src_w, $src_h) {
	global $breedte, $hoogte;
	$procentbreedte = $breedte * 100 / $src_w;
	$procenthoogte = $hoogte * 100 / $src_h;
	$berekeneven = ($procentbreedte < $procenthoogte) ? 100 / $procentbreedte : 100 / $procenthoogte;
	$breedtewordt = round($src_w / $berekeneven);
	$hoogtewordt = round($src_h / $berekeneven);
	return array($breedtewordt, $hoogtewordt);
}
function laatplaatjezien($file, $type) {
	$last_modified = gmdate('D, d M Y H:i:s', filemtime($file)) . ' GMT';
	$ditmoment = gmdate('D, d M Y H:i:s', time()) . ' GMT';
	header("Content-Type: image/$type");
	header("Last-Modified: $last_modified");
	header('Cache-control: private, no-cache, must-revalidate');
	header('Expires: Sat, 01 Jan 2020 00:00:00 GMT');
	header("Date: $ditmoment");
	header('Pragma: no-cache');
	readfile($file);
	exit;
}
function leescachethumb($hetorigineel, $thumbnaam, $laatzien = true) {
	if(file_exists($hetorigineel)) {
		$type = 'jpeg';
		if($type) {
			$thumbnail = "$thumbnaam.$type";
			clearstatcache();
			$last_modified = gmdate('D, d M Y H:i:s', filemtime($thumbnail)) . ' GMT';
			if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
				$laatstgewijzigd = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);
				if($laatstgewijzigd == $last_modified) {
					if($laatzien) {
						header('HTTP/1.0 304 Not Modified');
						exit;
					}
					else return true;
				}
			}
			if($laatzien) laatplaatjezien($thumbnail, $type);
			else return true;
		}
	}
	return false;
}
function maakdethumb($hetorigineel, $thumbnaam, $type, $laatzien = true) {
	$error = '';
	if(!$error) {
		if($fp = @fopen($hetorigineel, 'rb')) {
			$data = fread($fp, filesize($hetorigineel));
			fclose($fp);
			if($data) {
				if(!$src_img) {
					if($type == 'jpeg') {
						if(function_exists('ImageCreateFromJPEG')) {
							$src_img = @ImageCreateFromJPEG($hetorigineel);
						}
					}
				}
				if(!$error) {
					$src_w = ImageSX($src_img);
					$src_h = ImageSY($src_img);
					list($breedtewordt, $hoogtewordt) = haalnieuweafmetingen($src_w, $src_h);
					$trans_col = -1;
					$dst_img = ImageCreateTrueColor($breedtewordt, $hoogtewordt);
					if(function_exists('ImageCopyResampled'))
						ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $breedtewordt, $hoogtewordt, $src_w, $src_h);
					else ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $breedtewordt, $hoogtewordt, $src_w, $src_h);
					}
					if($type == 'jpeg') {
						@ImageJPEG($dst_img, "$thumbnaam.$type");
					}
					ImageDestroy($src_img);
					ImageDestroy($dst_img);
					if($laatzien) leescachethumb($hetorigineel, $thumbnaam);
				}
			}
		}
	return $error;
}
// Hoofdlus
$error = '';
if( $plaatje) {
	$data = '';
		if($plaatje) {
			if($fp = @fopen($plaatje, 'rb')) {
				while(!feof($fp)) $data .= fread($fp, 4096);
					fclose($fp);
				}
			else $error = 'kan hem niet openen';
			}
			if(!$error) {
				$hetorigineel = "$cache_dir/img_" . md5($data);
				$thumbnaam = $hetorigineel . '_' . $breedte . 'x' . $hoogte;
				$cached = leescachethumb($hetorigineel, $thumbnaam);
				if(!$cached) {
					if(!file_exists($hetorigineel)) {
						if($fp = @fopen($hetorigineel, 'wb')) {
						fwrite($fp, $data, strlen($data));
						fclose($fp);
					}
					else $error = 'kan hem niet opslaan';
				}
				if(!$error) {
					$imgsize = @getImageSize($hetorigineel);
					$type = 'jpeg';
					if($type) {
						if($imgsize[0] <= $breedte && $imgsize[1] <= $hoogte) {
							laatplaatjezien($hetorigineel, $type);
						}
					else {
						if($imgsize[0] < $breedte) $breedte = $imgsize[0];
							if($imgsize[1] < $hoogte) $hoogte = $imgsize[1];
								$error = maakdethumb($hetorigineel, $thumbnaam, $type);
						}
					}
				}
			}
		}
	}
?>

de code is hier geeindigd.
// -->
]]>
</programma_code>
</voorbeeld>
</dns5.nl>
