基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

openkk 12年前發布 | 23K 次閱讀 PHP 圖形/圖像處理

EvaCloudImage 是一個基于URL生成縮略圖的輕量級PHP庫,支持縮放/旋轉/截取等多種縮略圖生成方式,而僅僅需要通過簡單更改圖片的URL。

EvaCloudImage is a light-weight & opensource url based image transformation php library. See English version document.

EvaCloudImage的源代碼存放于Github,完全開源,歡迎Fork關注我

EvaCloudImage的功能包括:

影子模式

很多時候我們不希望暴露原圖片的地址,此時可以通過EvaCloudImage自動生成原圖片的影子圖片,保護原圖片URL不被泄露,比如

假如原圖片位于多級的樹形目錄下,影子圖片也會保持與原圖片同樣的目錄結構,從原切換到影子只需要更改域名或者根目錄。

圖片縮放

這里是原圖:

http://evacloudimage.avnpc.com/upload/demo.jpg

EvaCloudImage只需要更改影子圖片的URL即可實現縮放,只需要圖片的文件名末尾加入以逗號分隔的參數即可:

根據寬度縮放:

'w'參數是Width的縮寫,可以控制圖片按寬度縮放。下面的URL會生成一張300px寬的圖片:

http://evacloudimage.avnpc.com/thumb/demo,w_300.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

根據高度縮放:

同理通過更改'h'(Height),根據高度縮放圖片:

http://evacloudimage.avnpc.com/thumb/demo,h_150.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

按百分比縮放:

當w或h為小數時,圖片會按照百分比縮放,比如w_0.4會將圖片縮放至原尺寸的40%:

http://evacloudimage.avnpc.com/thumb/demo,w_0.4.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

注意:

  • 當w與h既有整數又有小數時,以整數為準
  • 當w與h同時為小數時,以w為準

圖片剪裁

使用'c'參數(Crop)可以剪裁圖片,比如c_100會從圖片的中心位置截取出一張100px的縮略圖。

http://evacloudimage.avnpc.com/thumb/demo,c_100.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

'g'參數(gravity)代表剪裁范圍或高度,需要配合c參數一起使用。比如下例,代表從圖片中心位置剪裁一張100px*200px的縮略圖。

http://evacloudimage.avnpc.com/thumb/demo,c_200,g_100.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

如果想要指定剪裁的精確位置,需要用'x'和'y'參數指定起點坐標,比如下面的例子,代表以距離圖片左邊80px,上邊10px為起點,剪裁一張100px*200px的圖片。

http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,x_80,y_10.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

圖片的剪裁與縮放可以混用,EvaCloudImage始終會先進行剪裁,然后再對剪裁后的圖片縮放。

http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,w_50.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

旋轉

旋轉參數為'r' (rotate) ,傳遞一個數字作為圖片旋轉的角度,比如讓圖片按照逆時針旋轉90度:

http://evacloudimage.avnpc.com/thumb/demo,h_200,r_90.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

JPG圖片壓縮質量

通過'q'(quality)可以指定jpg圖片的壓縮質量,默認為100:

http://evacloudimage.avnpc.com/thumb/demo,h_200,q_10.jpg

 基于URL生成縮略圖的輕量級PHP庫 EvaCloudImage

下載

下載 最新版本的EvaCloudImage,解壓即可使用。

安裝

1. 環境需求

  1. PHP 版本大于 5.3.0
  2. 以安裝GD 2.0+
  3. 服務器已經開啟Url Re-write模塊

2. 對安裝目錄開啟Url Re-write

Apache設置:

如果服務器為Apache并且已經開啟mod_rewrite模塊,則無需任何設置,重寫規則已經寫入.htaccess文件。

Nginx

請參考以下配置調整路徑

server {
        listen   80;
        server_name  evacloudimage.avnpc.com;
        location / {
                root  /usr/www/EvaCloudImage/;
                index index.php index.html index.htm;
                if (!-e $request_filename){
                   rewrite ^/(.*)$ /index.php?$1& last;
                }
        }
        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /usr/www/EvaCloudImage/$fastcgi_script_name;
        }
}

3. 配置文件

編輯源代碼中的config.inc.php文件:

array(
    'libPath' => __DIR__ . '/lib',  //依賴庫的存放路徑,一般無需更改
    'sourceRootPath' => __DIR__ . '/upload',  //原圖片的存放路徑,需要讀取權限
    'thumbFileRootPath' => __DIR__ . '/thumb', //縮略圖的存放路徑,需要讀寫權限
    'thumbUrlRootPath' => __DIR__, //縮略域名綁定的根目錄
    'saveImage' => false,  //如果開啟,所有縮略圖會自動保存,在正式環境推薦打開。
);

相關技術

EvaCloudImage 使用了以下的開源技術:

  • PHP Thumb : 好用的縮略圖生成庫;
  • Cloudinary : API設計參考了著名云服務Cloudinary;

許可證

EvaCloudImage 是 EvaEngine項目的一個前端組件,基于New BSD License發布,簡單說,你可以將EvaCloudImage用與任何商業或非商業項目中,可以自由更改EvaCloudImage的源代碼,惟一做的是保留源代碼中的作者信息。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!