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 表示支持外链的站点列表

至此为止,试试吧!