nginx設定:
複製程式碼 程式碼如下:
#假設,伺服器上面有一個檔案:abc.jpg,透過http://filefs.domain .com/file/abc.jpg能夠存取到原圖。其實#實一般的,我們在資料庫裡面也就儲存了「/file/abc.jpg」這部分內容。
#現在,我們要實作透過http://filefs.domain.com/file/abc.jpg.w320.jpg由伺服器自動產生#abc.jpg.w320.jpg(w320,320px的寬度)這個縮略圖。並返回圖片資料。
#要滿足以下兩個條件:
# 1.如果abc.jpg.w320.jpg存在,則不重新產生圖片
# 2.如果不存在,則在同一次的請求中,返回圖片數據,和保存圖片檔案到伺服器。
server {
listen 80;
server_name filefs.domain.com;
/var/ index index.html index.htm;
}
location ~ \.(png|jpg|jpeg|gif)$ {
autoimg.php
if (!-f $request_filename) {
rewrite ^/.*$ /aut }
#若存在文件,設定過期時間,關閉存取日誌
if ( -f $request_filename ) {
expires max;## }
error_page 500 502 503 504 /50x. html;
location = /50x.html {
root /usr/share/nginx/html;
}# # 只為這個腳本文件的範圍提交給php處理
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.# filefs.domain.com$fastcgi_script_name;
在clude 程式碼如下:
$file = $_server ['request_uri'];//請求字串/file/abc.jpg.w320.jpg
$desfile = $_server ['document_root'] . $file; //目標目標路徑/var/www/http/file/abc.jpg.w320.jpg
$dirname = dirname ( $desfile ) . "/";
$filename = basename ( $desfile );
if (preg_match ( "/([^\.] \.(png|jpg|jpeg|gif))\.w([\d] )\.(jpg)/i", $filename, $m )) {
$srcfile = $dirname . $m [1];
$width = $m [3]; if (in_array ( $width, array ( //只產生202、320寬度的檔案
202,
_exists ( $srcfile )) { //且檔案不存在
thumbnail ( $srcfile, $desfile, $width );
}
}
/**
* 產生縮圖
*
* @param 來源 $src *
*/
function thumbnail($src), $
/開始截取輸出流
$imageinfos = getimagesize ( $src );
$ext = strtolow info ( $ ## $im = imagecreatefromgif ( $src );
} elseif ($imageinfos [2] == 2) {# ## } elseif ($imageinfos [2] == 3) {
$im = imagecreatefrompng ( $src );
}
$height = $imageinfos [1] * $width / $imageinfos [0];
$dst_img = imagecreatetruecolor ( $width, $height );
_img, true );
$trans_colour = imagecolorallocatealpha ( $dst_img, 0, 0 , 0, 127 );
imagefill ( $dst_img, 0, 0, $trans_colour );
d ( $dst_img, $im, 0, 0, 0, 0, $width, $height, $imageinfos [0], $imageinfos [1] );
_img, null, 90 );//輸出檔流,90--壓縮質量,100表示最高品質。
# @imagedestroy ( $im);
else {
echo @file_get_contents ( $src );
}
ob_get_contents ();//取得輸出流
ob_end_flush ();//輸出流至網頁,保證第一次要求也有圖片資料放回
@file_put_contents ( $des, $content );//儲存檔案
}
#>
效果圖:
########################### #############以上是Nginx怎麼配合php實作產生即時縮圖功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!