最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年10月11日 10:06:56   投稿:junjie  
這篇文章主要介紹了Nginx配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能,這在一些特殊場合可能會(huì)要用到,需要的朋友可以參考下

在做自動(dòng)靜態(tài)化的時(shí)候,突然想到下面這個(gè)場景,也給出了解決方法。親,真的很實(shí)用,耐心看下去。

當(dāng)我從后臺(tái)上傳一個(gè)截圖之后,480*800的截圖之后,當(dāng)時(shí)就沒有壓縮出320*480的小縮略圖。好吧,服務(wù)器輪詢一下,全部產(chǎn)生出320*480的圖片。

那下一次呢,又有160*240的圖片了,又輪詢嗎,費(fèi)時(shí)費(fèi)力,還不能馬上就得到小圖。這個(gè)時(shí)候,我們就要開始抱怨了,怎么要這么多種圖片啊,設(shè)計(jì)師,你就不能老早就想好要哪些圖片么?

其實(shí),nginx是一個(gè)強(qiáng)大的反向代理服務(wù)器,通過它的rewrite模塊,我們可以實(shí)現(xiàn)自動(dòng)產(chǎn)生縮略圖,也不用輪詢數(shù)據(jù)庫了。產(chǎn)品設(shè)計(jì),要什么尺寸的,客戶端直接通過某種規(guī)則訪問就是了,我馬上就產(chǎn)生給你。
而且,后臺(tái)上傳的時(shí)候,只要保存一張最大的圖片就ok了。

這樣的話,需要其他尺寸的圖片,僅僅修改客戶端的訪問方式即可。

Nginx配置:

復(fù)制代碼 代碼如下:

#假設(shè),服務(wù)器上面有一個(gè)文件:abc.jpg,通過http://filefs.domain.com/file/abc.jpg能夠訪問到原圖。其#實(shí)一般的,我們在數(shù)據(jù)庫里面也就保存了“/file/abc.jpg”這部分內(nèi)容。
#現(xiàn)在,我們要實(shí)現(xiàn)通過http://filefs.domain.com/file/abc.jpg.w320.jpg由服務(wù)器自動(dòng)產(chǎn)生#abc.jpg.w320.jpg(w320,320px的寬度)這個(gè)縮略圖。并返回圖片數(shù)據(jù)。
#要滿足以下兩個(gè)條件:
#   1.如果abc.jpg.w320.jpg存在,則不重新產(chǎn)生圖片
#   2.如果不存在,則在同一次的請求中,返回圖片數(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è)置過期時(shí)間,關(guā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'];//請求字串 /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 ();//開始截獲輸出流
        $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)頁,保證第一次請求也有圖片數(shù)據(jù)放回
        @file_put_contents ( $des, $content );//保存文件
    }
?>

效果圖:

相關(guān)文章

  • Nginx服務(wù)狀態(tài)監(jiān)控的方法

    Nginx服務(wù)狀態(tài)監(jiān)控的方法

    這篇文章主要介紹了Nginx服務(wù)狀態(tài)監(jiān)控的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • nginx proxy_redirect https配置后端http302跳轉(zhuǎn)處理方式

    nginx proxy_redirect https配置后端http302跳轉(zhuǎn)處理方式

    這篇文章主要介紹了nginx proxy_redirect https配置后端http302跳轉(zhuǎn)處理方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx工作模式及代理配置的使用細(xì)節(jié)

    Nginx工作模式及代理配置的使用細(xì)節(jié)

    這篇文章主要為大家介紹了Nginx工作模式及代理配置的使用細(xì)節(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • windows下nginx如何操作命令

    windows下nginx如何操作命令

    這篇文章主要介紹了windows下nginx如何操作命令,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Nginx的搭建與核心配置方法

    Nginx的搭建與核心配置方法

    Nginx是一個(gè)高性能的反向代理和 Web服務(wù)器軟件,最初是由俄羅斯人 Igor Sysoev開發(fā)的,其源代碼基于雙條款BSD許可證發(fā)布,因其系統(tǒng)資源消耗低、運(yùn)行穩(wěn)定且具有高性能的并發(fā)處理能力等特性,這篇文章主要介紹了Nginx的搭建與核心配置,需要的朋友可以參考下
    2024-06-06
  • nginx日志打印請求頭信息示例詳解

    nginx日志打印請求頭信息示例詳解

    這篇文章主要介紹了nginx日志打印請求頭信息的相關(guān)資料,文章介紹了如何在Nginx中打印請求頭中的自定義字段,并解決由于下劃線導(dǎo)致的字段無法正確打印的問題,需要的朋友可以參考下
    2024-11-11
  • Windows下Nginx的啟動(dòng)停止重啟等命令操作過程

    Windows下Nginx的啟動(dòng)停止重啟等命令操作過程

    最近在window 上安裝了nginx ,對nginx 的操作不是很熟,故在此記錄一下常用操作,本文詳細(xì)介紹了Windows下Nginx的啟動(dòng),停止,重啟等命令,需要的朋友可以參考下
    2024-03-03
  • 使用Nginx反向代理到go-fastdfs的方法示例

    使用Nginx反向代理到go-fastdfs的方法示例

    這篇文章主要介紹了使用Nginx反向代理到go-fastdfs的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • nginx中url地址重寫的實(shí)現(xiàn)

    nginx中url地址重寫的實(shí)現(xiàn)

    本文主要介紹了nginx中url地址重寫的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • nginx 平滑重啟的實(shí)現(xiàn)方法

    nginx 平滑重啟的實(shí)現(xiàn)方法

    這篇文章主要介紹了nginx 平滑重啟的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

灵川县| 崇文区| 江阴市| 颍上县| 靖江市| 和平县| 都匀市| 大渡口区| 自贡市| 石阡县| 上蔡县| 武强县| 开阳县| 阿城市| 合江县| 遂宁市| 秦安县| 临猗县| 天长市| 濉溪县| 遂平县| 左贡县| 萝北县| 中西区| 云浮市| 沽源县| 西乌| 富平县| 金秀| 南部县| 辰溪县| 元氏县| 阜城县| 健康| 襄城县| 调兵山市| 吕梁市| 静安区| 栾城县| 广昌县| 邵阳市|