nginx利用image_filter动态生成缩略图
转自:http://www.nginx.cn/2160.html
"我如今是有些图片须要生成缩略图。这个如今加了image_filter这个已经实现了。但我不知道怎么样才干訪问我上传的原图"
刚開始认为也不太好弄。让他用程序区处理,实际上略微动脑筋分析一下也可以不改动程序实现动态生成缩略图且可以訪问原图。
前提是须要定好图片的訪问规则。
先来看一下什么是nginx的image filter模块。
HttpImageFilterModule用来裁剪过大的图片到指定大小。是nginx自带模块,默认不会开启
开启HttpImageFilterModule须要在编译要带上參数 --with-http_image_filter_module
该模块主要有两个指令:
语法: image_filter (test | size | resize width height | crop width height)
默认是: 无
可出现的上下文: location
该指令指定图像的转化形式:
test - 測试回复是否是JPEG、GIF、或PNG图片(不支持BMP等其它格式)。出错时返回415。
size - 返回图片的JSON数据,比方:( "Img": ( "width": 100, "height": 100, "type": "gif"))
resize - 依据设置按比例得减小图像,比方100*100的图片。而设置是50*25,减小后的图片为25*25。
假设你仅仅想设置一个维度。能够用“-”取代。出错时返回415。
crop - 依据设置按比例得减小图像。然后裁剪成跟设置一样大小的图片。
比方100*100的图片。而设置是50*25,减小后的图片为50*50,Nginx会选取中间高度25的像素,形成50*25的图片,所以图片会有缺失。假设你仅仅想设置一个维度。能够用“-”取代。出错时返回415。
语法: image_filter_buffer size
默认值: image_filter_buffer 1M
可出现的位置: http, server, location
该指令设置单图片缓存的最大值,假设过滤的图片大小超过缓存大小,会报错返回415。
如今開始时重点:
有了如上认识再配合locaiont、if、image_filter 就能够让nginx动态生成缩略图了。
如果你的图片位于/img文件夹下
訪问缩略图方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x90.jpg
訪问原图方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x0.jpg
http://www.xxx.cn/img/9GUMJR7200AJ0003_0x50.jpg
http://www.xxx.cn/img/9GUMJR7200AJ0003_0x0.jpg
http://www.xxx.cn/img/9GUMJR7200AJ0003.jpg
加入例如以下配置到server上下文就可以
location ~* /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ {
set $h $2;
set $w $3;
if ($h = "0") {
rewrite /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /img/$1.$4 last;
}
if ($w = "0") {
rewrite /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /img/$1.$4 last;
}
#依据给定的长宽生成缩略图
image_filter resize $h $w;
#原图最大2M。要裁剪的图片超过2M返回415错误,须要调节參数image_filter_buffer
image_filter_buffer 2M;
#error_page 415 /img/notfound.jpg;
try_files /img/$1.$4 /img/notfound.jpg;
}
location ~* /img {
}
推荐阅读:
http://wiki.nginx.org/HttpImageFilterModule
http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
http://cwtea.blog.51cto.com/4500217/1333142
nginx利用image_filter动态生成缩略图的更多相关文章
- 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放
如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...
- Nginx 整合 Lua 实现动态生成缩略图
原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...
- openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案)
openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案) --大部分的网站都要涉及到图片缩略图的处理,比如新闻配图,电 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- nginx实现本地图片生成缩略图
nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...
- 利用runtime动态生成对象?
利用runtime我们能够动态生成对象.属性.方法这特性 假定我们要动态生成DYViewController,并为它创建属性propertyName 1)对象名 NSString *class = @ ...
- 利用JS动态生成隔行换色HTML表格
用JS生成动态生成表格,行.列由用户输入,并使表格隔行换色 方法一. 代码: <!DOCTYPE html> 2 <html> 3 <head> 4 <tit ...
- 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...
- (转)php 根据url自动生成缩略图并处理高并发问题
分享是一种精神,与技术高低无关! 图片缩略图动态生成- [代码编程] 2011-08-23 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.c ...
随机推荐
- 使用LINQ 對List分頁/區
listview之類的服務器控件分頁自不用多說,拖拖控件改改屬性分分鐘的事.就不浪費大家時間了. 這裏只寫大概思路及關鍵代碼了. LINQ裏有一個對集合進行分區的操作可用於分頁. page ...
- Spring AOP前置通知和后置通知
Spring AOP AspectJ:Java社区里最完整最流行的AOP框架 在Spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP 在Spring中启用Aspect ...
- java jvm学习笔记三(class文件检验器)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验 ...
- 转载crontab例行工作调度
转自:http://blog.sina.com.cn/s/blog_95ee143401017y70.html crontab [-e [UserName]|-l [UserName]|-r [Use ...
- 【C/C++运行时库】 /MT /MTd /MD /MDd对C/C++运行库的影响
欢迎转载 转载请注明出处:http://www.cnblogs.com/cuish/p/3146937.html 测试VS中[项目属性]-[C/C++]-[代码生成]选项中的[运行库]- [ /MT, ...
- 【暑假】[数学]UVa 1262 Password
UVa 1262 Password 题目: Password Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld ...
- IOS上的字符编码
IOS字符编码 字符编码经常能听到的有Unicode.UTF-8.GBK.GB2312.GB18030.BIG5等.这些编码方式都有什么区别呢? 其实这些编码,大体分两类:全球统一编码和各过个语种的独 ...
- android sqlite 中存储 long 数据
在資料庫的技術中,一個資料庫(Database)表示應用程式儲存與管理資料的單位,應用程式可能需要儲存很多不同的資料,例如一個購物網站的資 料庫,就需要儲存與管理會員.商品和訂單資料.每一種在資料庫中 ...
- java 通过网络 ntp 获取网络时间
需要 commons-net-3.4.jar 库. import org.apache.commons.net.ntp.NTPUDPClient; import org.apache.commons. ...
- HDU 4497 GCD and LCM (数论)
题意:三个数x, y, z. 给出最大公倍数g和最小公约数l.求满足条件的x,y,z有多少组. 题解:设n=g/l n=p1^n1*p2^n2...pn^nk (分解质因数 那么x = p1^x1 * ...