Wordpress使用timthumb.php实现缩略图动态截取
一直对wordpress自带的多媒体缩略图裁剪比较不爽,每次上传的图片都会根据设置的图片尺寸进行裁剪,并将原图和裁剪后的图片保存在服务器上,如果以后修改主题遇到图片尺寸不合适,就极不方便了。
今天提到的 timthumb.php 是专门针对wordpress开发的可集成在主题中的缩略图应用项目,只会对调用的图片进行裁剪,而且是在有访问请求时才临时生成一个配置文件,在一定时间内缓存在服务器中,不会生成多余的缩略图,十分的方便。
timthumb 是什么
timthumb 是一个专门为 WordPress 而开发的缩略图应用的项目,只需要上传到主题文件夹即可,需要主机支持GD库,处理过程需要一定的服务器资源支持,曾经出现过漏洞。
timthumb 使用方法
A、下载 timthumb.php 上传于主题目录
在同一个目录下新建一个 cache 文件夹,赋予 cache 文件夹 755 或 777 权限。
chmod -R 755 /cache/
最新版本:2.8.14 2014-06-26
下载地址:Google Project 或 百度网盘(内含全文注解文件)
B、在主题 functions.php 中添加如下代码
//添加特色缩略图支持 if ( function_exists('add_theme_support') )add_theme_support('post-thumbnails'); //输出缩略图地址 function post_thumbnail_src(){ global $post; if( $values = get_post_custom_values("thumbnail") ) { //输出自定义域图片地址 $values = get_post_custom_values("thumbnail"); $post_thumbnail_src = $values [0]; } elseif( has_post_thumbnail() ){ //如果有特色图像缩略图,则输出特色图像缩略图地址 $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full'); $post_thumbnail_src = $thumbnail_src [0]; } else { $post_thumbnail_src = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $post_thumbnail_src = $matches [1] [0]; //获取该图片 src if(empty($post_thumbnail_src)){ //如果日志中没有图片,以下两种方案二选一 //如果日志中没有图片,则显示随机图片 $random = mt_rand(1, 10); //echo get_bloginfo('template_url'); //echo '/images/pic/'.$random.'.jpg'; $post_thumbnail_src = get_bloginfo('template_url').'/images/pic/'.$random.'.jpg'; //如果日志中没有图片,则显示默认图片 //$post_thumbnail_src = get_bloginfo('template_url')."/images/no-image.jpg"; } }; echo $post_thumbnail_src; }
C、在需要显示缩略图的地方添加调用代码:
<img src="<?php bloginfo('template_url');?>/timthumb.php?src=<?php echo post_thumbnail_src(); ?>&h=150&w=200&zc=1" alt="<?php the_title(); ?>" class="thumbnail"/>
注解:其中 src/w/h/zc 比较常用
src : 图片地址,或是需要进行截图操作的网页地址;
w : 缩略图宽度,如果宽度或高度只设置了一个值,则根据其中一个值进行等比缩放;
h : 缩略图高度,如果高度和宽度都没有指定,则默认为100*100;
zc : 图片的缩放模式,可选值0/1, 默认为1表示裁剪,0表示按设置的高宽压缩,不裁剪;
q : 生成图片的质量,默认90;
a : 超出部分的裁剪位置,和缩放模式有关,可选值t, b, l, r, 默认为从顶部裁剪;
f : 需要对生成后的图片使用一些过滤器的话,则在这里传不同过滤器的代码和值,具体操作方法可见下面文件的第821行注解;
s : 是否对生产的图片进行锐化处理;
cc : 生成图片的背景画布颜色;
ct : 生成png图片时背景是否透明;
D、timthumb.php 设置
上边通过百度网盘下载到的压缩包,包含了全文注解文件,可对应查阅。
说说其中几个常用配置:
ALLOW_EXTERNAL 表示是否调用外链图片
$ALLOWED_SITES 表示支持外链的站点列表
至此为止,试试吧!