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

nginx 生成 缩略图 and 生成缩略图到硬盘的更多相关文章

  1. nginx实现本地图片生成缩略图

    nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...

  2. 转: nginx使用image_filter生成缩略图 -- fasdfs海量图片缩略图整合

      转: nginx使用image_filter生成缩略图 -- fasdfs海量图片缩略图整合 http://blog.csdn.net/CleverCode/article/details/522 ...

  3. 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放

    如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...

  4. 帝国cms教程:帝国cms在列表页使用sys_ResizeImg函数自动生成不同大小的缩略图

    先说说 ecms7.0的sys_ResizeImg这个函数 下面是在列表页使用方法 在右侧把使用程序代码打勾! 如下图: 例如你原先的列表页循环内容代码为: <li><img src ...

  5. Docker 实战(二)——centos7镜像安装nginx,将安装nginx的centos容器生成新的镜像,并导出

    Docker centos7镜像安装nginx 1.安装docker 使用yum安装docker不再重复:见  Linux常用命令 2.pull centos 1)在docker仓库中搜索centos ...

  6. nginx负载均衡、nginx ssl原理及生成密钥对、nginx配制ssl

    1.nginx负载均衡 新建一个文件:vim /usr/local/nginx/conf/vhost/load.conf写入: upstream abc_com{ip_hash;server 61.1 ...

  7. Nginx之 Location 的生成

    1. Location 的生成 location 的生成大致有三种: 由 location 指令直接生成 命令 location:仅用于 server 内部跳转,如 rewrite 就是命名 loca ...

  8. 代码文档生成工具-Doxygen生成CHM和RTF图文教程

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen.     1.下载do ...

  9. Django 反向生成 从数据库生成Model

    Django 反向生成 从数据库生成Model 使用Django生成Model python manage.py inspectdb或python manage.py inspectdb > m ...

  10. uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码

    项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能 ...

随机推荐

  1. 【jsp 练习】 给定三角形三边判断是否能组成三角形及计算面积

    Test.java package package1; public class Test { double side1 = -1 , side2 = -1 , side3 = -1 , area = ...

  2. opencv基础知识------IplImage, CvMat, Mat 的关系和相互转换

    Mat,cvMat和IplImage这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化.而CvMat和IplImage类型更侧重于“图像 ...

  3. tiny210 u-boot 网络ping不通主机解决方案

    站在巨人的肩膀上: http://blog.csdn.net/liukun321/article/details/7438880 http://www.arm9home.net/read.php?ti ...

  4. Extjs 4.1 struts2.3 返回json 初试

    之前曾经使用过3.x版本的extjs,当时可以结合struts实现各种基本的增删查改.但是4.1版本中增加了一些属性,出现了一些新的使用方法,导致错误不断,有的时候调用到相应的action却返回不了值 ...

  5. (二)、Struts第二天

    (二).Struts第二天 回顾: 问题: 1. Struts2的Action类是单例还是多例? Filter? Servlet? Listener? 2. 介绍struts2框架引入的相关jar包及 ...

  6. XML回顾

    xml加强 一.sax解析    1)原理: 读取xml的某个部分,解析一部分(读取一点,解析一点)    2)步骤:         SAXParserFactory factory = SAXPa ...

  7. 移动web开发常用属性

    <!-- html5 doctype --> <!doctype html> <!-- lang 属性设置,中文页面尽量不要设置为 "en",这会开启 ...

  8. C# Excel嵌入到Winform

    本文讲的这个技术是把Excel表格嵌入到自己开发程序的Form窗体中进行操作,给客户一个不用切换窗口的操作界面,似乎更好.这在VC中用OLE技术很容易实现,但是在C#中方法就不一样啦.下面将就此进行阐 ...

  9. compileSdkVersion,buildToolsVersion还有targetSdkVersion要一致,从而避免build的时候报错

    Android Studio里的app的build.gradle文件: android { compileSdkVersion 24 buildToolsVersion "24.0.0&qu ...

  10. call_create_syn.sql

    promptprompt ================================================================================prompt ...