PHP圖片處理類phpThumb使用詳解

來源:互聯網
上載者:User
這次給大家帶來PHP圖片處理類phpThumb使用詳解,PHP圖片處理類phpThumb使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

phpThumb幾個基本參數
一些有用的參數列一下:

src:靶心圖表片的地址
w:輸出圖片的寬度
h:輸出圖片的高度(如果不指定他將按w參數等比縮放)
q:輸出如果是JPG格式的,可以規定它的輸出品質
bg:輸出時的背景(如果需要)
sw、sh、sx、sy:局部輸出,寬高、起始位置
f:輸出格式,可以為jpeg、png、gif、ico
sfn:輸出gif動畫中的某一幀
fltr[]:濾鏡,可以有很多效果,包括銳利化、模糊、旋翻轉、浮水印、邊框、遮照、色彩調整等

官方常式:
http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php
使用 phpThumb 和 .htaccess 來緩衝縮圖
原理:使用者訪問 your.com/thumbs/images/image.50×50.jpg 這樣的網址,指令碼產生 your.com/images/image.jpg 的縮圖,並且儲存到 your.com/thumbs/images/image.50×50.jpg,下次訪問就不用調 PHP 啦。
簡介
大約一年以前我碰到了 phpThumb 這個牛掰的指令碼,它是個用來縮放圖片的開源項目。當然你可以用 GD2 或者 imagemagick(magickwand) 來幹同樣的事情,但 phpThumb 是專門幹這個的。它用起來相當簡單:

<img src="phpthumb/phpThumb.php?src=myimage.jpg&w=100&h=100">

如果訪問量很大的話就撐不住了,因為 apache 要為每個圖片的請求去調 PHP 來解析 phpThumb 的代碼。儘管 phpThumb 自己有緩衝,它還是要調 PHP 來決定是否從緩衝裡讀。
我曾經看見有人用 mod_rewrite 把不存在的圖片重新導向到一個可以產生縮圖的指令碼,以此來解決效能問題:
你需要:
Apache
mod_rewrite
PHP
這些東西通常虛擬機器主機都有,至於怎麼安裝就不在本文的討論範圍之內了。
OK,快告訴我怎麼弄吧!
上傳 phpThumb
從這裡下載 phpThumb: http://phpthumb.sourceforge.net/ ,把它上傳到 yoursite.com/phpthumb
配置 Mod_Rewrite
建立 yoursite.com/thumbs/.htaccess :

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA] </IfModule>

建立縮圖產生指令碼:

建立 yoursite.com/thumbs/index.php

$thumb = $_GET['thumb']; if (!$thumb) { exit; } // $thumb_array = explode('.',$thumb); $image = '../'; foreach($thumb_array as $k=>$thumb_part){ if ($k != count($thumb_array)-2) { $image .= $thumb_part . '.'; } } $image = substr($image,0,-1); list($width,$height) = explode('x',$thumb_array[count($thumb_array)-2]); // if (file_exists($image)) { require('../phpthumb/phpthumb.class.php'); $phpThumb = new phpThumb(); $phpThumb->setSourceFilename($image); $phpThumb->setParameter('w',$width); $phpThumb->setParameter('h',$height); //$phpThumb->setParameter('far','C'); // scale outside //$phpThumb->setParameter('bg','<SPAN class=caps>FFFFFF</SPAN>'); // scale outside if ($phpThumb->GenerateThumbnail()) { mkdir(dirname($thumb),0777,true); if ($phpThumb->RenderToFile($thumb)) { header('Location: /thumbs/'.$thumb); exit; } } }

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

php圖片裁剪與縮圖使用執行個體講解

php preg_match匹配字串長度案例解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.