Nginx配合php实现生成实时缩略图功能

2019-10-17 20:36:07王冬梅

    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    
    location ~ autoimg.php$ {#安全性考虑,文件服务器,只这个脚本文件的范围提交给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产生图片文件代码:


<?php
    $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,
                320
        ) ) && file_exists ( $srcfile )) {  //而且文件不存在
            thumbnail ( $srcfile, $desfile, $width );
        }
    }
    
    /**
     * 生成缩略图
     *
     * @param 源 $src           
     * @param 缩放后的宽带 $width        
     *
     */
    function thumbnail($src, $des, $width) {
        ob_start ();//开始截获输出流
        $imageinfos = getimagesize ( $src );