nginx图片处理

前言

不管一个系统或网站的大小,都存在相应的图片处理,生成缩略图、为图片加水印等等,如果涉及到APP端,这个图片的处理需求变得更加仲要了,因为在目前看来,客户端的屏幕大小不一,会导致以下问题: 
1、图片过大导致APP加载图片速度慢; 
2、消耗用户过多流量。


思路

1、APP请求图片,并提供需要图片的尺寸信息,nginx经过拦截后,处理并缓存图片。 
2、当app下次请求同样的图片时,nginx直接取缓存中的图片返回给APP(这个暂不深究)。

nginx图片处理流程图

具体实现步骤:

1、nginx_http_image_filter_module在nginx 0.7.54以后才出现的,用于对JPEG, GIF和PNG图片进行转换处理这个模块默认不被编译,所以要在编译nginx源码的时候,加入相关配置信息(略) 
2、ngx_http_image_filter_module指令(nginx官网)

location /img/ {    proxy_pass   http://backend;    image_filter resize 150 100;    image_filter rotate 90;    error_page   415 = /empty;}

location = /empty {    empty_gif;}

3、http_image_filter_module指令的配置本地nginx

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {     set $w     $3;     set $h     $4;     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ $1 break;     image_filter resize $w $h;}

4、运行结果: 
(1)

 
(2)

疑问:这两张图片看上去,怎么看也不是一个正方形? 
解答:http_image_filter_module模块的image_filter 指令决定了,语法: image_filter (test | size | resize width height | crop width height),这里用到了 resize width height;resize:就是根据设置按比例得到图片; 
疑问:怎么才能得到设置的真实的大小,比如100x100,就得到一张100x100的图片? 
解答:进行剪裁,用到的是 crop width height 
5、配置

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {     set $w     $3;     set $h     $4;     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ $1 break;     image_filter resize $w $h;     image_filter crop $w $h;}

6、运行结果: 
(1)

(2)

7、到此就已经实现了生成缩略图的配置了,如果还需要其他的操作,比如,将图片旋转,就是用rotate就可以了,其他就不做过多的描述。 
8、配置

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ {     set $w     $3;     set $h     $4;     set $rotate     $5;     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)!(.*)$ $1 break;     image_filter resize $w $h;     image_filter crop $w $h;     image_filter rotate $rotate;}
时间: 2024-10-09 04:00:39

nginx图片处理的相关文章

(转)Nginx图片服务器

本文转至博客http://wenxin2009.iteye.com/blog/2117079 Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.html 本例下载的是window版本nginx-1.6.1 以下是我本机操作说明: 下载完后,解压,并把它放到D:\tools\nginx-1.6.1,双击nginx.exe即可运行nginx.可通http://127.0.0.1访问到nginx欢迎界面,如下  也可在cmd中通过命令进行启停启动n

nginx图片过滤处理模块http_image_filter_module安装配置笔记

nginx图片过滤处理模块http_image_filter_module安装配置笔记 http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用. 安装还是很简单的,默认HttpImageFilterModule模块是不会编译进ngi

nginx图片过滤处理模块http_image_filter_module

nginx图片过滤处理模块http_image_filter_module安装配置笔记 http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用. 安装还是很简单的,默认HttpImageFilterModule模块是不会编译进ngi

用nginx图片缓存服务器

用nginx图片缓存服务器 图片的存储硬件 把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很: 如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力.是 7200 转的还是 15000 转的,实际表现差别就很大.是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件

搭建Nginx图片服务器

搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--prefix使用默认值,则nginx安装在/usr/local/nginx ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --with-http_stub_status_module --with-http_ss

nginx图片、css、js缓存

开始的时候搭建nginx环境,以为单单是为了负载均衡,实现分布式集群.现在发现可以使用nginx的缓存机制来优化相应速度.下面介绍一下nginx图片.css.js的缓存. #图片缓存时间设置 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 8d; } #JS和CSS缓存时间设置 location ~ .*.(js|css)?$ { expires 2h; } 可以看出通过设置过期时间,减少后台的访问负担. nginx图片.css.js缓存

centos7 nginx图片 服务器可以访问ftp用户上传的图片资源的配置

注:本文参考了csdn:JAVA_DIRECTION的<nginx和ftp搭建图片服务器>一文.在实践中其文在centos7中还是存在缺陷性的 一:前提条件:是成功的安装好了ftp服务器和nginx服务器:如果没有安装敬请参考<CentOS7 搭建FTP服务器>和 <centos7_ linux : Nginx安装手册> 二:开放ftpuser用户主目录的其他用户的访问权限: 1 [[email protected] home]# chmod -R 777 ftpuse

Nginx图片服务器

最近总项目因为需要显示图片,就使用了Nginx,使用很简单,下面简单介绍一下怎么用 压缩包下载地址,解压即用 http://files.cnblogs.com/files/sanduweiliangxtx/nginx-1.5.8.zip 解压后进入  conf文件夹 找到 nginx.conf  记事本打开: listen 是你要使用的端口, server_name是ip地址,因为是在本地设置的,所以用了 127.0.0.1,如果放到服务器上的话,就是用 服务器的ip地址. 接下来是配置图片库的

nginx图片防盗链

1.全站防盗链:配置nginx.conf 2.针对图片目录防盗链:配置nginx.conf 3.使用第三方模块防盗链:ngx_http_accesskey_module(需要重新编译nginx)