一直对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
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('//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、在需要显示缩略图的地方添加调用代码:
注解:其中 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 表示支持外链的站点列表
至此为止,试试吧!