首頁 >運維 >Nginx >Nginx怎麼配合php實作產生即時縮圖功能

Nginx怎麼配合php實作產生即時縮圖功能

WBOY
WBOY轉載
2023-05-15 18:37:06946瀏覽

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實作產生即時縮圖功能

Nginx怎麼配合php實作產生即時縮圖功能

########################### #############

以上是Nginx怎麼配合php實作產生即時縮圖功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除