189 8069 5689

PHPThumb生成缩略图

PHP Thumb 是一个 PHP 的类用来生成图片的缩略图。

创新互联建站服务项目包括深泽网站建设、深泽网站制作、深泽网页制作以及深泽网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,深泽网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到深泽省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

示例代码:

resize(100, 100); $thumb->show(); ?>

phpThumb几个基本参数
一些有用的参数列一下:
src:目标图片的地址
w:输出图片的宽度
h:输出图片的高度(如果不指定他将按w参数等比缩放)
q:输出如果是JPG格式的,可以规定它的输出质量
bg:输出时的背景(如果需要)
sw、sh、sx、sy:局部输出,宽高、起始位置
f:输出格式,可以为jpeg、png、gif、ico
sfn:输出gif动画中的某一帧
fltr[]:滤镜,可以有很多效果,包括锐化、模糊、旋翻转、水印、边框、遮照、色彩调整等
更多效果可以参看官方例程
使用 phpThumb 和 .htaccess 来缓存缩略图
原 理:用户访问 your.com/thumbs/images/image.50×50.jpg 这样的网址,脚本生成 your.com/images/image.jpg 的缩略图,并且保存到 your.com/thumbs/images/image.50×50.jpg,下次访问就不用调 PHP 啦。
简介
大约一年以前我碰到了 phpThumb 这个牛掰的脚本,它是个用来缩放图片的开源项目。当然你可以用 GD2 或者 imagemagick(magickwand) 来干同样的事情,但 phpThumb 是专门干这个的。它用起来相当简单:

如果访问量很大的话就撑不住了,因为 apache 要为每个图片的请求去调 PHP 来解析 phpThumb 的代码。尽管 phpThumb 自己有缓存,它还是要调 PHP 来决定是否从缓存里读。
我曾经看见有人用 mod_rewrite 把不存在的图片重定向到一个可以生成缩略图的脚本,以此来解决性能问题:
你需要:
Apache
mod_rewrite
PHP
这些东西通常虚拟主机都有,至于怎么安装就不在本文的讨论范围之内了。
OK,快告诉我怎么弄吧!
上传 phpThumb
从这里下载 phpThumb: http://phpthumb.sourceforge.net/ ,把它上传到 yoursite.com/phpthumb
配置 Mod_Rewrite
新建 yoursite.com/thumbs/.htaccess :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]

新建缩略图生成脚本:
新建 yoursite.com/thumbs/index.php
. 代码如下:

$thumb = $_GET[\'thumb\'];
if (!$thumb) {
exit;
}
//
$thumb_array = explode(\'.\',$thumb);
$image = \'../\';
foreach($thumb_array as $k=>$thumb_part){
if ($k != count($thumb_array)-2) {
$image .= $thumb_part . \'.\';
}
}
$image = substr($image,0,-1);
list($width,$height) = explode(\'x\',$thumb_array[count($thumb_array)-2]);
//
if (file_exists($image)) {
require(\'../phpthumb/phpthumb.class.php\');
$phpThumb = new phpThumb();
$phpThumb->setSourceFilename($image);
$phpThumb->setParameter(\'w\',$width);
$phpThumb->setParameter(\'h\',$height);
//$phpThumb->setParameter(\'far\',\'C\'); // scale outside
//$phpThumb->setParameter(\'bg\',\'FFFFFF\'); // scale outside
if ($phpThumb->GenerateThumbnail()) {
mkdir(dirname($thumb),0777,true);
if ($phpThumb->RenderToFile($thumb)) {
header(\'Location: /thumbs/\'.$thumb);
exit;
}
}
}

测试一下!
上传一张图片到 yoursite.com/images/myimage.jpg
打开你的浏览器,访问 yoursite.com/thumbs/images/myimage.100×100.jpg
检查 thumbs 目录,应该有个缩略图在那。下次访问就不用调 PHP 啦。

名称栏目:PHPThumb生成缩略图
文章路径:http://cdxtjz.cn/article/cjecdd.html