這篇文章主要講解了“Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能”吧!
十年的崇左網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整崇左建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“崇左網(wǎng)站設(shè)計(jì)”,“崇左網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
nginx配置:
復(fù)制代碼 代碼如下:
#假設(shè),服務(wù)器上面有一個(gè)文件:abc.jpg,通過(guò)http://filefs.domain.com/file/abc.jpg能夠訪(fǎng)問(wèn)到原圖。其#實(shí)一般的,我們?cè)跀?shù)據(jù)庫(kù)里面也就保存了“/file/abc.jpg”這部分內(nèi)容。
#現(xiàn)在,我們要實(shí)現(xiàn)通過(guò)http://filefs.domain.com/file/abc.jpg.w320.jpg由服務(wù)器自動(dòng)產(chǎn)生#abc.jpg.w320.jpg(w320,320px的寬度)這個(gè)縮略圖。并返回圖片數(shù)據(jù)。
#要滿(mǎn)足以下兩個(gè)條件:
# 1.如果abc.jpg.w320.jpg存在,則不重新產(chǎn)生圖片
# 2.如果不存在,則在同一次的請(qǐng)求中,返回圖片數(shù)據(jù),和保存圖片文件到服務(wù)器。
server {
listen 80;
server_name filefs.domain.com;
root /var/www/http/filefs.domain.com;
location / {
index index.html index.htm;
}
location ~ \.(png|jpg|jpeg|gif)$ {
#如果文件不存在,則rewrite到產(chǎn)生圖片的腳本文件autoimg.php
if (!-f $request_filename) {
rewrite ^/.*$ /autoimg.php;
expires max;
}
#如果文件存在,則設(shè)置過(guò)期時(shí)間,關(guān)閉訪(fǎng)問(wèn)日志
if ( -f $request_filename ) {
expires max;
access_log off;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ autoimg.php$ {#安全性考慮,文件服務(wù)器,只這個(gè)腳本文件的范圍提交給php處理
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_filename /var/www/http/filefs.domain.com$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
}
php產(chǎn)生圖片文件代碼:
復(fù)制代碼 代碼如下:
<?php
$file = $_server ['request_uri'];//請(qǐng)求字串 /file/abc.jpg.w320.jpg
$desfile = $_server ['document_root'] . $file; //目標(biāo)目標(biāo)路徑 /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 ( //只產(chǎn)生202和320寬度的文件
202,
320
) ) && file_exists ( $srcfile )) { //而且文件不存在
thumbnail ( $srcfile, $desfile, $width );
}
}
/**
* 生成縮略圖
*
* @param 源 $src
* @param 縮放后的寬帶 $width
*
*/
function thumbnail($src, $des, $width) {
ob_start ();//開(kāi)始截獲輸出流
$imageinfos = getimagesize ( $src );
$ext = strtolower ( pathinfo ( $src, 4 ) );
if ($imageinfos [2] == 1) {
$im = imagecreatefromgif ( $src );
} elseif ($imageinfos [2] == 2) {
$im = imagecreatefromjpeg ( $src );
} elseif ($imageinfos [2] == 3) {
$im = imagecreatefrompng ( $src );
}
if (isset ( $im )) {
$height = $imageinfos [1] * $width / $imageinfos [0];
$dst_img = imagecreatetruecolor ( $width, $height );
imagesavealpha ( $dst_img, true );
$trans_colour = imagecolorallocatealpha ( $dst_img, 0, 0, 0, 127 );
imagefill ( $dst_img, 0, 0, $trans_colour );
imagecopyresampled ( $dst_img, $im, 0, 0, 0, 0, $width, $height, $imageinfos [0], $imageinfos [1] );
header ( 'content-type:image/jpg' );
imagejpeg ( $dst_img, null, 90 );//輸出文件流,90--壓縮質(zhì)量,100表示最高質(zhì)量。
@imagedestroy ( $im );
@imagedestroy ( $dst_img );
} else {
echo @file_get_contents ( $src );
}
$content = ob_get_contents ();//獲取輸出流
ob_end_flush ();//輸出流到網(wǎng)頁(yè),保證第一次請(qǐng)求也有圖片數(shù)據(jù)放回
@file_put_contents ( $des, $content );//保存文件
}
?>
效果圖:
感謝各位的閱讀,以上就是“Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
文章題目:Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能
分享URL:http://bm7419.com/article34/geidpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)