wordpress自帶的縮略圖功能會對每次上傳的全部圖片根據設置的圖片尺寸進行裁剪,並把原圖和裁剪後的圖片保存在網站空間中,圖片只裁剪一次,更改設置的尺寸不會從新生成,這樣不只佔用主機空間,之後改版網站時還要使用同一尺寸的圖片,不然圖片會失真或變形。timthumb.php是專門針對wordpress開發的集成在wordpress主題中的縮略圖應用項目,只會對調用的圖片進行裁剪,並且是在有訪問請求時才臨時生成一個配置文件,在必定時間內緩存在空間中,不會生成多餘的縮略圖。php
舒適提示:html
- timthumb須要主機支持GD庫;
- timthumb處理過程須要必定的服務器資源支持;
- timthumb不支持外鏈圖片;
- timthumb出現過漏洞;
- 做者表示再也不更新timthumb。
timthumb.php使用方法:web
一、下載timthumb.php文件:https://code.google.com/p/timthumb/ 或 http://pan.baidu.com/s/1i4P2SMp緩存
二、上傳timthumb.php到當前主題文件夾,並在該主題文件夾中建立一個命名爲cache的文件夾,設置cache文件夾的權限爲755或777服務器
三、關閉wordpress縮略圖功能,教程:http://www.boke8.net/wordpress-close-thumbnail.htmldom
四、在主題的functions.php文件添加如下代碼:wordpress
- //輸出縮略圖地址
- 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。post
自定義域圖片教程:http://www.boke8.net/wordpress-image-thumbnail.html網站
特點圖像教程:http://www.boke8.net/wordpress-built-in-thumbnail.htmlui
五、在須要顯示縮略圖的地方添加調用代碼:
- <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"/>
使用的參數及說明以下:
w : 生成圖片的寬度,若是寬度或高度只設置了一個值,則根據其中一個值進行等比縮放
h : 生成圖片的高度,若是高度和寬度都沒有指定,則默認爲100*100
zc : 生成圖片的縮放模式,可選值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',
- );