摘录自 AutoIndex 的缩略图显示函数

在用 php 处理图像时,一个最常用的功能就是生成缩略图,本文介绍的是摘录自 AutoIndex 的缩略图显示函数,该函数可以根据图像的扩展名自动执行对应的处理函数,支持gif、jpg、png,可以自定义缩略图的大小,相信对新手学习php图像处理函数很有帮助。

 
<?php
// 说明:摘录自 AutoIndex 的缩略图显示函数
// 整理:http://www.CodeBit.cn

//显示缩略图核心函数
function display_thumbnail($file, $thumbnail_height)
{
	global $html_heading;
	if (!@is_file($file))
	{
		header('HTTP/1.0 404 Not Found');
		die("$html_heading<p>File not found: <em>".htmlentities($file).'</em></p>');
	}
	switch (ext($file))
	{
		case 'gif':
			$src = @imagecreatefromgif($file);
			break;
		case 'jpeg':
		case 'jpg':
		case 'jpe':
			$src = @imagecreatefromjpeg($file);
			break;
		case 'png':
			$src = @imagecreatefrompng($file);
			break;
		default:
			die("$html_heading<p>Unsupported file extension.</p>");
	}
	if ($src === false)
	{
		die("$html_heading<p>Unsupported image type.</p>");
	}
	
	header('Content-Type: image/jpeg');
	header('Cache-Control: public, max-age=3600, must-revalidate');
	header('Expires: '.gmdate('D, d M Y H:i:s', time()+3600).' GMT');
	$src_height = imagesy($src);
	if ($src_height <= $thumbnail_height)
	{
		imagejpeg($src, '', 100);
	}
	else
	{
		$src_width = imagesx($src);
		$thumb_width = $thumbnail_height * ($src_width / $src_height);
		$thumb = imagecreatetruecolor($thumb_width, $thumbnail_height);
		imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_width,
			$thumbnail_height, $src_width, $src_height);
		imagejpeg($thumb, '', 100);
		imagedestroy($thumb);
	}
	imagedestroy($src);
	die();
}

//获取文件扩展名
function ext($fn)
//return the lowercase file extension of $fn, not including the leading dot
{
	$fn = get_basename($fn);
	return (strpos($fn, '.') ? strtolower(substr(strrchr($fn, '.'), 1)) : '');
}

//获取完整文件名
function get_basename($fn)
//returns everything after the slash, or the original string if there is no slash
{
	return basename(str_replace('\', '/', $fn));
}

//调用方式 参数(图片名,缩略图最大高度)
display_thumbnail('newwebpick.com.jpg', '200');

?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>