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

1 http_image_filter_module

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。

1.1 查看有没有安装

# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.5.0

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)

TLS SNI support enabled

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=/usr/local/src/nginx/fastdfs-nginx-module/src

2 模块说明

image_filter off;

#关闭模块

image_filter test;

#确保图片是jpeg gif png否则返415错误

image_filter size;

#输出有关图像的json格式:例如以下显示{ "img" : { "width": 100, "height": 100, "type": "gif" } } 出错显示:{}

image_filter rotate 90|180|270;

#旋转指定度数的图像,參数能够包括变量,单独或一起与resize crop一起使用。

image_filter resize width height;

#按比例降低图像到指定大小,公降低一个能够还有一个用"-"来表示,出错415,參数值可包括变量,能够与rotate一起使用,则两个一起生效。

image_filter crop width height;

#按比例降低图像比較大的側面积和还有一側多余的载翦边缘,其他和rotate一样。没太理解

image_filter_buffer 10M;

#设置读取图像缓冲的最大大小,超过则415错误。

image_filter_interlace on;

#假设启用,终于的图像将被交错。对于JPEG,终于的图像将在“渐进式JPEG”格式。

image_filter_jpeg_quality 95;

#设置变换的JPEG图像的期望质量。可接受的值是从1到100的范围内。较小的值通常意味着既降低图像质量,降低数据传输,推荐的最大值为95。參数值能够包括变量。

image_filter_sharpen 100;

#添加了终于图像的清晰度。锐度百分比能够超过100。零值将禁用锐化。參数值能够包括变量。

image_filter_transparency on;

#定义是否应该透明转换的GIF图像或PNG图像与调色板中指定的颜色时,能够保留。透明度的损失将导致更好的图像质量。在PNG的Alpha通道总是保留透明度。

3 安装

3.1 安装gd,HttpImageFilterModule模块需要依赖gd-devel的支持

# yum -y install gd-devel

3.2 将http_image_filter_module包含进来

# cd /usr/local/src/nginx

# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
--add-module=/usr/local/src/fastdfs/fastdfs-nginx-module/src --with-http_image_filter_module

#  make && make install

4 配置nginx

4.1 正常缩放

# vi /usr/local/nginx/conf/nginx.conf

location ~* /img {

root /data0;

image_filter resize 150 100;

image_filter rotate 90;

}

http://img2.mydomain.com/img/w8.png

4.2 fastdfs配置

a)架构与安装

参考:http://blog.csdn.net/clevercode/article/details/52276169.

b)配置

location ~ group1/M00/(.+)_([0-9]+)x([0-9]+)\.(jpg|gif|png) {
            alias /data0/fastdfs/storage/storage0/data;
            ngx_fastdfs_module;
            set $w $2;
            set $h $3;           

            if ($w != "0") {
                rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
            }

            if ($h != "0") {
                rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
            }

            #根据给定的长宽生成缩略图
            image_filter resize $w $h;

            #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer
            image_filter_buffer 2M;

            #try_files group1/M00$1.$4 $1.jpg;
        }

        location ~ group1/M00/(.+)\.?(.+){
           alias /data0/fastdfs/storage/storage0/data;
           ngx_fastdfs_module;
        }

c)访问原图.

http://img2.mydomain.com/group1/M00/00/00/wKhlhFe7DCeAcOvYAAaxqYLWRQk392.png

d)访问缩略图

http://img2.mydomain.com/group1/M00/00/00/wKhlhFe7DCeAcOvYAAaxqYLWRQk392_80x60.png

时间: 2024-11-08 22:18:48

nginx使用image_filter生成缩略图 -- fasdfs海量图片缩略图整合的相关文章

nginx+lua+GraphicsMagick生成实时缩略图-CentOS7

背景 大多数的系统都会涉及缩略图的处理,比如新闻系统和电商系统,特别是电商系统,每个商品大图都会对应一系列尺寸的缩略图用于不同业务场景的使用.部分系统也会生成不同尺寸的缩略图以供PC.手机端.ipad端使用. 解决方案探索: 直接加载原图,使用css样式表来控制图片的宽高.显然不太合适,大家也尽量不要这样做. web程序在上传成功后,同时生成相应缩略图.这种做法效率较低,如果遇到批量导入的业务时严重影响性能.并且同步生成缩略图会占用一定量的存储空间,如果能按需生成岂不更好? 使用七牛.阿里云提供

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

先说说 ecms7.0的sys_ResizeImg这个函数 下面是在列表页使用方法 在右侧把使用程序代码打勾! 如下图: 例如你原先的列表页循环内容代码为: <li><img src="[!---titlepic--]"><a href="[!---titleurl--]">[!---title--]</a></li> 现在则要在下面框子里输入 if ($r[titlepic]){$tpic=sys_Res

NGINX按天生成日志文件的简易配置

NGINX按天生成日志文件的简易配置 0x01 最近后端童鞋遇到一个小需求,拆分nginx生成的log文件,最好是按天生成,看着她还有很多bug待改的状态,我说这个简单啊,我来吧.曾经搞node后端的时候,这些东西都so easy的,我还记得当时用log4js,几行配置文件就能搞定,现在就算是直接配置nginx应该也不会特别麻烦. 0x02 先说一下项目的大概架构.整个项目采用docker部署,一共三个container,一个getaway负责整个服务的网络转发,然后就是一个backend和fr

nginx利用image_filter动态生成缩略图

原文:http://www.open-open.com/lib/view/open1416193847945.html "我现在是有些图片需要生成缩略图,这个现在加了image_filter这个已经实现了,但我不知道怎么样才能访问我上传的原图" 刚开始觉得也不太好弄,让他用程序区处理,实际上稍微动脑筋分析一下也可以不修改程序实现动态生成缩略图且能够访问原图. 前提是需要定好图片的访问规则. 先来看一下什么是nginx的image filter模块. HttpImageFilterMod

nginx+lua_nginx+GraphicsMagick生成实时缩略图

暂做笔记,带后续验证通过后,再补充 1.2.3 步. 一.安装 lua 二.安装 GraphicsMagick 三.安装nginx 四.配置 nginx nginx.conf http { lua_package_path '/usr/local/openresty/nginx/lua/?.lua;;'; server { listen 80; server_name img.rhythmk.org; root /home/wwwroot/static/image; #对类似_100x100.g

wordpress4.4+版本自动生成一个768w像素缩略图的解决办法

4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还是会生成一个768*x像素的缩略图,这个问题你在网上是找不到解决办法的,所能找到的方法全部失效,好在我今天研究了一天,终于解决了. 在文件wp-admin\includes\schema.php里有如下代码,可以看出是4.4新增的功能. // 4.4.0 'medium_large_size_w'

Nginx+PHP实时生成不同尺寸图片

原来图片服务器采用Windows .net架构,鉴于需求需要生成各种尺寸图片. 流程说明: 用户从Nginx请求对应的图片,判断是否存在_200x300的对应参数,如果没有就直接请求到对应目录的原图,否则继续判断是否在本地已经生成了对应的缓存图片,如果存在返回已经生成过的定制尺寸图片,否则请求PHP动态生成. Nginx部分配置:     server {         listen       80;         server_name  pics.abc.com;         lo

dedecms有缩略图则显示缩略图,没有则显示随机缩略图

随着html5以及扁平化等新的设计概念的深入人心,缩略图功能则成了一般网页模版制作不可或缺的一个功能,dedecms默认的的缩略图调用标签[field:imglink/] 或者 [field:litpic/],在文章有缩略图的时候会调用缩略图,没有的时候就调用默认图片defaultpic.gif,但是会有各种意外的情况导致文章内没有配图,只是显示默认的图片的话,页面美观上就得不到保证,前面还有人分享过一篇通过js来实现随机缩略图的,具体使用起来的话,还是觉得有些鸡肋,今天的话给大家分享一个新的解

jqthumb.js缩略图插件-让缩略图正常显示而不变形

插件介绍 项目中有图片的时候,有的宽大于高,有的宽小于高,尤其在做图片列表的时候,经常发现缩略图会有变形的.我们怎样来解决这一问题呢. 方法一:用photoshop来处理缩略图.小的项目还可以,大的项目,这样做难免会累的半死: 方法二:用jqthumb.js这款插件,只需要写上几句话,就可以让我们的项目中的缩略图快速解决! jQThumb 兼容所有浏览器,包括 IE6.在高级浏览器中使用背景方式实现,并设置图片的尺寸(background-size)和位置(background-position