PHP图片处理类 phpThumb参数用法介绍


Posted in PHP onMarch 11, 2012

phpThumb几个基本参数
一些有用的参数列一下:
src:目标图片的地址
w:输出图片的宽度
h:输出图片的高度(如果不指定他将按w参数等比缩放)
q:输出如果是JPG格式的,可以规定它的输出质量
bg:输出时的背景(如果需要)
sw、sh、sx、sy:局部输出,宽高、起始位置
f:输出格式,可以为jpeg、png、gif、ico
sfn:输出gif动画中的某一帧
fltr[]:滤镜,可以有很多效果,包括锐化、模糊、旋翻转、水印、边框、遮照、色彩调整等
更多效果可以参看官方例程:
http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php
使用 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 是专门干这个的。它用起来相当简单:
<img src="phpthumb/phpThumb.php?src=myimage.jpg&w=100&h=100">
如果访问量很大的话就撑不住了,因为 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 :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]
</IfModule>
新建缩略图生成脚本:
新建 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','<SPAN class=caps>FFFFFF</SPAN>'); // 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 啦。
官方网站 http://phpthumb.gxdlabs.com/
PHP 相关文章推荐
PHP实现文件安全下载
Oct 09 PHP
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
PHP多例模式介绍
Jun 24 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
PHP错误处理函数
Apr 03 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
php创建类并调用的实例方法
Sep 25 PHP
PHPThumb PHP 图片缩略图库
Mar 11 #PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 #PHP
PHP 代码规范小结
Mar 08 #PHP
色色整理的PHP面试题集锦
Mar 08 #PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 #PHP
php打造属于自己的MVC框架
Mar 07 #PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 #PHP
You might like
收藏的一个php小偷的核心程序
2007/04/09 PHP
mysql总结之explain
2012/02/27 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
python中re模块知识点总结
2021/01/17 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
运动会演讲稿300字
2014/08/25 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2014年工程师工作总结
2014/11/25 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang