nginx利用image_filter动态生成缩略图
2019独角兽企业重金招聘Python工程师标准>>>
"我现在是有些图片需要生成缩略图,这个现在加了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 {}
转载于:https://my.oschina.net/ydsakyclguozi/blog/663863
nginx利用image_filter动态生成缩略图相关推荐
- 利用Javascript动态生成表格的小demo
利用Javascript动态生成表格的小demo 利用Javascript中data数据库存储内容动态生成表格,点击删除可对整行内容进行删除 <!DOCTYPE html> <htm ...
- ASM(六) 利用TreeApi 动态生成以及转换方法字节码
一.MethodNode概述 ASM的TreeApi 对于Method的转换.生成也提供了一系列的组件和接口.其功能主要基于前一章提到的MethodNode类.MethodNode中大多数属性和方法都 ...
- java利用freemarker动态生成word文档及动态表格
这里写自定义目录标题 目标 准备 实现 处理模板 java实现 验证 目标 根据给定word模板,动态填充指定内容,并输出为新的word文档. 准备 1.模板: 准备一份目标格式的word文档,如:w ...
- 在内存中动态生成缩略图
public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/jpeg&q ...
- java centos 缩略图_使用 Nginx 的 image_filter 模块来构建动态缩略图服务器
原标题:使用 Nginx 的 image_filter 模块来构建动态缩略图服务器 在以前我们实现缩略图机制通常是在当用户上传一张图片后,后端程序会固定将图片生成前端页面需要的不同大小缩略图.不管前端 ...
- 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...
- 如何实时生成缩略图?
GraphicsMagick资料 ---------------------------------------------------------------------------- Graphi ...
- GraphicsMagick安装、实时生成缩略图
GraphicsMagick资料 ---------------------------------------------------------------------------- Graphi ...
- nginx配置image_filter生成缩略图
最近有个需求,客户端向服务器请求图片时,可以带get参数请求想要的缩略图,例如http://www.xxxxx.com/Upload/img//1de23275134663.jpg?size=100x ...
最新文章
- malloc(0)-malloc 0 字节
- 仿支付宝/微信的password输入框效果GridPasswordView解析
- chrome 控制台js调试与断点调试
- SQLite3动态创建表
- 局部静态变量Static详解
- 【软件周刊】微软发布 Mac 版 Visual Studio,SQL Server 2016 SP1 紧跟节奏
- shell脚本安装python_shell脚本安装python、pip
- Spring容器创建流程(5)bean后置处理之注册
- oracle 手动添加分区,如何在oracle中创建子分区?
- 终于找到中文版JDK1.8-API了~
- Python 3.5安装JPype
- 大数据之 Hadoop 基本概念
- 学习:通用软件滤波算法-前序
- HMI智能座舱自动化测试软件
- Firefox XPI插件安装方法
- [渝粤教育] 西南科技大学 教育心理学 在线考试复习资料
- 怎样在微信上发淘宝商品链接?
- css3动画停留在最后一帧
- 从 拼多多 到 抖音
- PHP C#-QQ网站bkn算法