nginx中利用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目录下

访问缩略图方式

/images/9GUMJR7200AJ0003_90x90.jpg

访问原图方式

/images/9GUMJR7200AJ0003_90x0.jpg

/images/9GUMJR7200AJ0003_0x50.jpg

/images/9GUMJR7200AJ0003_0x0.jpg

/images/9GUMJR7200AJ0003.jpg

添加如下配置到server上下文即可

 代码如下 复制代码

location ~* /images/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ {   
    set $h $2;
    set $w $3;
    if ($h = "0") {
rewrite /images/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /images/$1.$4 last;
    }
    if ($w = "0") {
rewrite /images/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /images/$1.$4 last;
    }

    #根据给定的长宽生成缩略图
    image_filter resize $h $w;
    #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer
    image_filter_buffer 2M; 
   
    #error_page  415      /images/notfound.jpg;
    try_files /images/$1.$4  /images/notfound.jpg; 
}

location ~* /images {
   
}

时间: 2024-09-17 22:59:56

nginx中利用image_filter动态生成缩略图示例的相关文章

php利用GD库生成缩略图示例_Mysql

php利用GD库生成缩略图. 复制代码 代码如下: <form method="post" action="suo_do.php" enctype="multipart/form-data"> <input type="file" name="pic" /> <input type="submit" value="上传1" /> &

asp.net中利用UrlRewrite动态生成htm页面

前段时间做项目,一直都在寻找一种动态生成htm页面的方法,要求配置简单,和项目无关. 功夫不负有心人,终于被我找到了,只需要在web.config中进行简单配置,就可以达到动态生成静态 页面的效果,同时又不影响Url重定向.web.config中需要注意的配置节为<configuration>. <RewriteConfig>.<httpModules>.<httpHandlers>,在这些配置节里边都有注释, 容易看懂. <?xml version=

在Nginx中配置image filter模块来实现动态生成缩略图_nginx

先来看一下什么是nginx的image filter模块. HttpImageFilterModule用来裁剪过大的图片到指定大小,是nginx自带模块,默认不会开启 开启HttpImageFilterModule需要在编译要带上参数 --with-http_image_filter_module 该模块主要有两个指令: 语法: image_filter (test | size | resize width height | crop width height) 默认是: 无 可出现的上下文:

php动态生成缩略图并输出显示的方法_php技巧

本文实例讲述了php动态生成缩略图并输出显示的方法.分享给大家供大家参考.具体如下: 调用方法: <img src="thumbs.php?filename=photo.jpg&width=100&height=100"> 此代码可以为大图片动态生成缩略图显示,图片在内存中生成,不在硬盘生成真实文件 thumbs.php文件如下: <?php $filename= $_GET['filename']; $width = $_GET['width'];

php动态生成缩略图并输出显示的方法

    下面为你介绍了php动态生成缩略图并输出显示的方法,涉及php操作图片的相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php动态生成缩略图并输出显示的方法.分享给大家供大家参考.具体如下: 调用方法: ? 1 <img src="thumbs.php?filename=photo.jpg&width=100&height=100"> 此代码可以为大图片动态生成缩略图显示,图片在内存中生成,不在硬盘生成真实文件 thumbs.php文

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来

动态表头 固定-Gridview中怎么固定动态生成的表头?

问题描述 Gridview中怎么固定动态生成的表头? Gridview中固定表头的方法很多,但是如果是在后台生成的动态模板列的时候,表头是后台生成的,用CSS和js不能实现固定表头,那请问怎么样将其进行表头固定?求大神指导!谢谢!

利用PHP动态生成VRML网页

多年前本人开始从事三维动画方面的学习,后学习了PHP,发现可以通过PHP动态生成VRML文档,有点类似于Generator动态生成Flash的方式.  由于VRML博大精深,这里只介绍一个简单的例子,还可以将各种VRML结点存入数据库中,这样的虚拟现实网页将--,爽!  下面是源程序.注意:在服务器上,要将让PHP处理wrl格式的文档,否则后果将是没有任何虚拟现实.本源程序直接存成wrl文件,在浏览器中要安装插件,可以到我的另一个主页上去下载:http://go.163.com/~sjtucao

php生成缩略图示例代码分享

分享一个利用php的GD库生成缩略图的例子,大家参考使用吧 代码如下: <form method="post" action="suo_do.php" enctype="multipart/form-data">    <input type="file" name="pic" />    <input type="submit" value="上