使用timthumb.php截取文章缩略图

wordpress自带的缩略图功能会对每次上传的所有图片根据设置的图片尺寸进行裁剪,并把原图和裁剪后的图片保存在网站空间中,图片只裁剪一次,更改设置的尺寸不会重新生成,这样不仅占用主机空间,以后改版网站时还要使用同一尺寸的图片,否则图片会失真或变形。timthumb.php是专门针对wordpress开发的集成在wordpress主题中的缩略图应用项目,只会对调用的图片进行裁剪,而且是在有访问请求时才临时生成一个配置文件,在一定时间内缓存在空间中,不会生成多余的缩略图。

温馨提示

  • timthumb需要主机支持GD库;
  • timthumb处理过程需要一定的服务器资源支持;
  • timthumb不支持外链图片;
  • timthumb出现过漏洞;
  • 作者表示不再更新timthumb。

timthumb.php使用方法:

1、下载timthumb.php文件:

[url href=https://pan.baidu.com/s/1pTfRhsqa_z7Cgj6KKaZb3w]百度网盘[/url](也可自行搜索最新版)

2、上传timthumb.php到当前主题文件夹,并在该主题文件夹中创建一个命名为cache的文件夹,设置cache文件夹的权限为755或777

3、关闭wordpress缩略图功能,教程:http://www.boke8.net/wordpress-close-thumbnail.html

4、在主题的functions.php文件添加以下代码:

//输出缩略图地址
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)){
            $post_thumbnail_src = get_bloginfo('template_url')."/images/no-image.jpg"; //如果日志中没有图片,则显示默认图片
        }
    };
    echo $post_thumbnail_src;
}

上面的代码表示先获取自定义域的图片,如果没有设置自定义域图片则获取特色图像,如果没有设置特色图像获取内容首张图片,如果内容也没有图片,则显示默认图像no-image.jpg。

自定义域图片教程:http://www.boke8.net/wordpress-image-thumbnail.html

特色图像教程:http://www.boke8.net/wordpress-built-in-thumbnail.html

5、在需要显示缩略图的地方添加调用代码:

<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 : 生成图片的高度,如果高度和宽度都没有指定,则默认为100*100zc : 生成图片的缩放模式,可选值0, 1, 2, 3, 默认为1。0:根据传入的值进行缩放(不裁剪), 1:以最合适的比例裁剪和调整大小(裁剪), 2:按比例调整大小,并添加边框(裁剪),2:按比例调整大小,不添加边框(裁剪)
  • webshot : 如果此值为真则进行截图操作
  • q : 生成图片的质量,默认90
  • a : 超出部分的裁剪位置,和缩放模式有关,可选值t, b, l, r, 默认为从顶部裁剪
  • f : 需要对生成后的图片使用一些过滤器的话,则在这里设置不同过滤器的代码和值。
  • s : 是否对生产的图片进行锐化处理
  • cc : 生成图片的背景画布颜色
  • ct : 生成png图片时背景是否透明

在Wordpress上使用timthumb.php生成缩略图一般只需要用到src、w、h、zc四个参数,其他参数使用默认值即可。

附修补timthumb.php漏洞问题:

  • 使用最新版的timthumb.php(但作者表示不再更新)
  • 服务器目录权限设置
  • 删除白名单
  • 在文件中找到以下代码,删除或注释掉
// external domains that are allowed to be displayed on your website
$allowedSites = array (
        'flickr.com',
        'picasa.com',
        'blogger.com',
        'wordpress.com',
        'img.youtube.com',
);
timthumb最大的优点是方便,目前还没有遇到过这样的工具,缺点同样明显,每次请求的时候,都会调用php-cgi或者是php-cli,缓存的数据放在cache目录下,调用数据要去查找目录,性能上会比较低。

以上来自:http://www.zhaowy.cn/build/wordpress/171/.html

温馨提示:本文最后更新于2020-03-05 22:31:19,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容