1. 程式人生 > >使用timthumb.php截取文章縮略圖

使用timthumb.php截取文章縮略圖

中一 values custom ref 過程 func 改版 spl 訪問

wordpress自帶的縮略圖功能會對每次上傳的所有圖片根據設置的圖片尺寸進行裁剪,並把原圖和裁剪後的圖片保存在網站空間中,圖片只裁剪一次,更改設置的尺寸不會重新生成,這樣不僅占用主機空間,以後改版網站時還要使用同一尺寸的圖片,否則圖片會失真或變形。timthumb.php是專門針對wordpress開發的集成在wordpress主題中的縮略圖應用項目,只會對調用的圖片進行裁剪,而且是在有訪問請求時才臨時生成一個配置文件,在一定時間內緩存在空間中,不會生成多余的縮略圖。

溫馨提示:

  • timthumb需要主機支持GD庫;
  • timthumb處理過程需要一定的服務器資源支持;
  • timthumb不支持外鏈圖片;
  • timthumb出現過漏洞;
  • 作者表示不再更新timthumb。

timthumb.php使用方法:

1、下載timthumb.php文件:https://code.google.com/p/timthumb/ 或 http://pan.baidu.com/s/1i4P2SMp

2、上傳timthumb.php到當前主題文件夾,並在該主題文件夾中創建一個命名為cache的文件夾,設置cache文件夾的權限為755或777

3、關閉wordpress縮略圖功能,教程:http://www.boke8.net/wordpress-close-thumbnail.html

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

  1. //輸出縮略圖地址
  2. function post_thumbnail_src(){
  3. global $post;
  4. if( $values = get_post_custom_values("thumbnail") ) { //輸出自定義域圖片地址
  5. $values = get_post_custom_values("thumbnail");
  6. $post_thumbnail_src = $values [0];
  7. } elseif( has_post_thumbnail() ){ //如果有特色縮略圖,則輸出縮略圖地址
  8. $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),‘full‘);
  9. $post_thumbnail_src = $thumbnail_src [0];
  10. } else {
  11. $post_thumbnail_src = ‘‘;
  12. ob_start();
  13. ob_end_clean();
  14. $output = preg_match_all(‘/<img.+src=[\‘"]([^\‘"]+)[\‘"].*>/i‘, $post->post_content, $matches);
  15. $post_thumbnail_src = $matches [1] [0]; //獲取該圖片 src
  16. if(empty($post_thumbnail_src)){
  17. $post_thumbnail_src = get_bloginfo(‘template_url‘)."/images/no-image.jpg"; //如果日誌中沒有圖片,則顯示默認圖片
  18. }
  19. };
  20. echo $post_thumbnail_src;
  21. }

上面的代碼表示先獲取自定義域的圖片,如果沒有設置自定義域圖片則獲取特色圖像,如果沒有設置特色圖像獲取內容首張圖片,如果內容也沒有圖片,則顯示默認圖像no-image.jpg。

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

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

5、在需要顯示縮略圖的地方添加調用代碼:

  1. <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*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(但作者表示不再更新)
  • 服務器目錄權限設置
  • 刪除白名單

在文件中找到以下代碼,刪除或註釋掉

  1. // external domains that are allowed to be displayed on your website
  2. $allowedSites = array (
  3. ‘flickr.com‘,
  4. ‘picasa.com‘,
  5. ‘blogger.com‘,
  6. ‘wordpress.com‘,
  7. ‘img.youtube.com‘,
  8. );
本文地址:http://www.zhaowy.cn/build/wordpress/171/.html
版權聲明:本文為原創文章,版權歸 admin 所有,歡迎分享本文,轉載請保留出處!

使用timthumb.php截取文章縮略圖