The Technology database of Duke Yin

Woredpress用TimThumb或七牛裁剪特色图像

WordPress虽然内置图片裁剪功能,但只能固定设置“Thumbnail” “Medium” “Large”三种尺寸,在很多时候并不能满足网站主题显示图像的需求,所以TimThumb这个项目就是为了解决这一问题,只要在URL中设定需要显示的缩略图尺寸,就能很快得到需要的缩略图,我在这篇文章中介绍了如何使用TimThumb.php

文章“特色图像”是一篇文章的题图,不同环境需要输出不同图片尺寸,比如列表的图片需要小一点,文章页的图片又需要大一点,手机界面的又需要更小,我之前的文章已经介绍过关于获取特色图像的方法。结合TimThumb和获取到的特色图像,以下给出代码,用TimThumb来输出自定义尺寸的特色图像,655宽268高,并且链接到原图。

<!-- get preview image -->
<!--?php if ( has_post_thumbnail()):?-->
<a href="<?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post-&gt;ID), array(770,770));
echo $array_image_url[0];
?>;">
<img src="<?php echo get_stylesheet_directory_uri() ?&gt;/timthumb.php?src=&lt;?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post-&gt;ID), array(770,770));
echo $array_image_url[0];
?>&h=268&w=655&zc=1" alt="<?php the_title() ?>" /></a>
<!--?php endif; ?-->
<!-- get preview image end-->

 

再例如,我的个人网站就使用了TimThumb.php获取特色图像,源码片段如下:

<a href="&lt;?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post-&gt;ID), array(770,770));
echo $array_image_url[0];
>" rel="lightbox[grouped]">
<img src="<?php echo get_stylesheet_directory_uri() ?&gt;/timthumb.php?src=&lt;?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post-&gt;ID), array(770,770));
echo $array_image_url[0];
?>&h=268&w=655&amp;zc=1" alt="<?php the_title() ?>" /></a></span>
<!--?php endif; ?-->
<!-- get preview image end-->

 

但是TimThumb几次爆出存在严重漏洞,会直接导致Wordpress被黑,作者几经更新仍然得不到较好的解决,众多受害者让作者亚历山大,所以心力交瘁的作者决定再也不更新TimThumb。

不更新的结果将会是漏洞越来越多,使用TimThumb也就越来越提心吊胆,谁也不希望自己做的网站第二天早上起来打开就是某黑客组织的大旗。

幸运的是七牛云存储也提供了远程裁剪图片的功能,对于已经放置在七牛的图片,一个URL地址就可以返回裁剪好的图片,而且在国内速度奇快,经过我实验,放置在七牛的图片比起放置在阿里云服务器里的图片要快很多很多,阿里云服务器I/O一直备受诟病,“机智”的阿里紧接着推出所谓的开放存储OSS,说“嫌服务器读写速度慢的都掏钱买OSS吧”。而七牛免费10GB存储,10GB月流量,对于一般站来说绰绰有余。

在Wordpress站使用七牛有很多种方法,我使用的是“我爱水煮鱼”博主开发的“七牛镜像存储 WordPress 插件”,按照我爱水煮鱼介绍的方法配置好七牛的免费账户和Wordpress这边的插件设置,就可以轻松给博客的静态文件加速,css,js,jpg,png…这些不经常更改的文件全部从七牛下载,服务器只需要做好本职的数据处理任务就ok。

水煮鱼的插件不仅可以加速静态文件,还内置了获取缩略图的函数,通过以下代码,可以免去服务器切图的工作,直接把特色图像交给七牛,让七牛在她们的服务器里生成好一个指定尺寸的缩略图返回到网站上显示。

<?php if ( has_post_thumbnail()):?>
<?php wpjam_post_thumbnail(array(655,268),$crop=1);?>
<?php endif; ?>
<!-- get preview image end-->

 

可以看出,关键的代码是这一句,数组即为所需图像的宽高,crop=1为裁剪图像,crop=0为不裁剪,只缩放。

<?php wpjam_post_thumbnail(array(655,268),$crop=1);?>

 

总结:

1,使用TimThumb的好处是所有工作都交给Wordpress所在的服务器去完成,不用担心第三方的服务器会不会抽风,而且切图的速度其实非常快,TimThumb还很聪明地把切好的图放在本地存起来,以后再切就只需要访问缓存,不用每次都耗费服务器资源计算切图。
2,TimThumb放弃治疗,漏洞本来就不少现在使用更让人提心吊胆。
3,七牛便宜,即使网站特别大免费不能满足你,性价比也高。
4,七牛自带CDN,速度快,这帮人整天就在研究如何让全国人民快速访问到他们服务器里的文件。
5,使用七牛存图、切图无形中给网站添加了一个不稳定因素,因为谁也不知道七牛的服务器什么时候down了,或者域名又不能访问了,这个时候网站上的css废掉直接会变成没排版的白纸黑字,图片全部变成红叉,专业术语叫“开天窗”。
6,使用水煮鱼的插件获取特色图像,关闭插件后缩略图将不会显示(因为获取七牛缩略图函数是插件特有的),这又是一个不稳定因素。
7,尽管如此,使用七牛一年多,基本没有碰上无法访问的时候,更甚至访问速度都一直很快。

8,依靠TimThumb或者七牛,各有各的好,也各有各的不足,站长需要谨慎抉择。

update:
现在有个TimThumb的替代品mThumb
https://github.com/mindsharelabs/mthumb
据说解决了tt的不安全,然而参数和tt完全一样,只需替换文件即可。可以尝试

# # #