• nginx 生成 缩略图 and 生成缩略图到硬盘


    nginx  编译的时候增加  ./configure --with-http_image_filter_module 

    配置如下

    server

    {

      listen     80;

      server_name 192.168.0.156;

      index index.html index.htm index.php;

      root /opt/htdocs;

      access_log /opt/local/nginx/logs/access.log main;

      location ~* (.*)/(d+).(jpg|png|gif)$

       {

        set $h $arg_h;

        set $w $arg_w;

         #image_filter crop $h $w;

          image_filter resize $h $w;

        }

      location ~* /(d+)_(d+)x(d+).(jpg|png|gif)$

         {

       if ( -e $document_root/$1.$4 )

       {

       rewrite /(d+)_(d+)x(d+).(jpg|png|gif)$ /$1.$4?h=$2&w=$3 last;

        }

       return 404;

      }

    }

    缩略图使用.. 图片保存在 /opt/htdocs/upload/ 目录下面.. 如 0.jpg

    原图访问 http://192.168.0.156/upload/0.jpg

    缩略100x100 访问  http://192.168.0.156/upload/0_100x100.jpg

    缩略300x300 访问  http://192.168.0.156/upload/0_300x300.jpg

    如果原图不存在  将会返回 404 !!

    生成缩略图到本地硬盘中

    server

    {

      listen     80;

      server_name 192.168.0.156;

      index index.html index.htm index.php;

      root /opt/htdocs;

      access_log /opt/local/nginx/logs/www.xxx.com.log main;

      

      location ~* ^/resize

        {

      set $width  100;

      set $height 100;

      set $dimens "";

      if ($uri ~* "^/resize_(d+)x(d+)/(.*)" ) 

        {

       set $width $1;

       set $height $2;

       set $image_path $3;

       set $demins "_$1x$2";

      }

       if ($uri ~* "^/resize/(.*)" ) 

        {

       set $image_path $1;

        }

       set $image_uri image_resize/$image_path?width=$width&height=$height;

       if (!-f $request_filename) {

       proxy_pass http://192.168.0.156/$image_uri;

       break;

        }

       proxy_store /opt/htdocs/upload/resize$demins/$image_path;

       proxy_store_access user:rw group:rw all:r;

       proxy_set_header Host $host;

       expires      30d;

       access_log off;

      }

       location /image_resize {

       alias /opt/htdocs/;

       image_filter resize $arg_width $arg_height;

       image_filter_jpeg_quality 75;

       access_log off;

     }

    }

    缩略图使用.. 图片保存在 /opt/htdocs/upload/ 目录下面.. 如 0.jpg

    原图访问 http://192.168.0.156/upload/0.jpg

    访问 http://192.168.0.56/resize/upload/0.jpg   

      location ~* ^/resize

        {

      set $width  100;

      set $height 100;

      set $dimens "";

    缩略为定义的 100 x 100

    当缩略图存在时间

    访问  http://192.168.0.156/resize_100x100/upload/0.jpg

      if ($uri ~* "^/resize_(d+)x(d+)/(.*)" ) 

        {

       set $width $1;

       set $height $2;

       set $image_path $3;

       set $demins "_$1x$2";

      }

       if ($uri ~* "^/resize/(.*)" ) 

        {

       set $image_path $1;

        }

    缩略为 resize_$width x $height    缩略定义大小

    当缩略图不存在时,使用直接缩略 图片质量为 75% 

       set $image_uri image_resize/$image_path?width=$width&height=$height;

       

       location /image_resize {

       alias /opt/htdocs/;

       image_filter resize $arg_width $arg_height;

       image_filter_jpeg_quality 75;

       access_log off;

      

    访问  http://192.168.0.156/image_resize/upload/0.jpg?width=100&height=100

    并利用 Nginx proxy_store 缓存缩略的图片到本地

       if (!-f $request_filename) {

       proxy_pass http://192.168.0.156/$image_uri;

       break;

        }

       proxy_store /opt/htdocs/upload/resize$demins/$image_path;

       proxy_store_access user:rw group:rw all:r;

       proxy_set_header Host $host;

       expires      30d;

       access_log off;

      }

    访问  http://192.168.0.156/resize_100x100/upload/0.jpg

    生成图片的路径为 /opt/htdocs/upload/resize_100x100/upload/0.jpg

  • 相关阅读:
    iptables单独记录一个日志文件
    centos7安装kvm
    查看一个启动的程序安装位置
    mysql-audit
    select 导出数据以|分割
    Codeforces 1105E 最大独立集 状态DP 中途相遇法
    Codeforces 1140E DP
    Codeforces 1152D DP
    GYM 101933E 状态压缩 + 记忆化搜索
    Codeforces 1151E 统计贡献
  • 原文地址:https://www.cnblogs.com/jicki/p/5546979.html
Copyright © 2020-2023  润新知