Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能

這篇文章主要講解了“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í)縮略圖功能

Nginx怎么配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能

感謝各位的閱讀,以上就是“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)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)