• 如果您觉得本站还有点用,那么赶紧使用Ctrl+D 收藏吧
  • 热烈庆祝图库功能上线,具体请看站长公告
  • api接口慢慢研发中,具体请看发布页:接口发布页

博客使用timthumb.php

应用教程 窝主 1个月前 (05-29) 67次浏览 百度未收录 1个评论 扫描二维码
文章目录[隐藏]

文章前言:

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

注意点:

  • timthumb 需要主机支持 GD 库;
  • timthumb 处理过程需要一定的服务器资源支持;
  • timthumb 出现过漏洞;(这个下文提及)
  • 作者表示不再更新 timthumb。

使用方法:

下载 php 文件,解压文件后上传 timthumb.php 到当前主题文件夹,然后去关闭 wp 的图片缩略图功能(登陆博客后台,点击“设置”选项卡下的“媒体”选项,进入媒体选项设置界面,把缩略图大小、中等、大尺寸的宽高都设置为 0 或留空)。

注意:本段内容须“登录”后方可查看!

在主题的 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;
}

上诉代码中:
博客使用timthumb.php
默认图片路径可以自己更改。
在你需要显示预览图的地方调用:

<img src="<?php bloginfo('template_url');?>/timthumb.php?src=<?php echo post_thumbnail_src(); ?>&h=200&w=280&zc=1" alt="<?php the_title(); ?>" class="thumbnail"/>

下面是我在百度找的参数解释说明:
博客使用timthumb.php
虽然很多,但是在传入的时候可以不用传那么多,一般只需要用到 src、w、h、zc 四个参数,其他参数使用默认值即可。

漏洞说明:

如果服务器上的文件名为 test.php.txt,那么它将被服务器视为文本文件,而不是 PHP 文件,并按照这种方式提供。但是可以告诉服务器将.txt 文件视为 PHP 文件,它们通过 PHP 解释器运行文件+代码。
解决方法就是不让这个文件夹有执行 php 脚本的权限。
Nginx 环境:
在配置文件 server 字段下加入以下代码然后重启 nginx:

location ~ /cache/.*.(php|php5)?$ {
deny all;
}

Apache 环境:
在 vhosts 配置文件中添加如下代码(文件路径要根据自己机子改):

<Directory /www/www./cache>
php_flag engine off
</Directory>
<Directory ~ "^/www/.*/cache">
 <Files ~ ".php">
 Order allow,deny
 Deny from all
 </Files>
</Directory>

二次元圈子, 版权所有
转载请注明原文链接:博客使用timthumb.php
喜欢 (1)
[支付宝扫一扫投食小窝主]
分享本页面
窝主
关于作者:
作者简介:咕咕咕

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. :grin: 签到成功!月色与雪色之间,你是第三种绝色。_____TIME:2020-05-29 14:08:46
    窝主2020-05-29 14:08 Windows 10 | Chrome 81.0.4044.129
正在获取,请稍候...
00:00/00:00

播放器
换装