官方地址:http://nginx.org/en/docs/http/ngx_http_image_filter_module.html

煮酒品茶:前半部安装和官方说明,后半部分实践

#yum install -y gd-devel

Install add http_image_filter_module Module

#./configure --prefix=/usr/local/nginx_image_filter/ --with-http_image_filter_module

#make && make install

use:

off:关闭模块处理

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

size:输出有关图像的json格式:如下显示

{ "img" : { "width": 100, "height": 100, "type": "gif" } }

出错显示:

{}

rotate 90|180|270:旋转指定度数的图像,参数可以包括变量,单独或一起与resize crop一起使用。

resize width height:按比例减少图像到指定大小,公减少一个可以另一个用"-"来表示,出错415,参数值可包含变量,可以与rotate一起使用,则两个一起生效。

resize width height:按比例减少图像大小,其它和rotate一样。

crop width height:按比例减少图像比较大的侧面积和另一侧多余的载翦边缘,其它和rotate一样。没太理解

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

syntax:image_filter_buffer size;

default:

image_filter_buffer 1M;

context:http, server, location

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

syntax:image_filter_interlace on | off;

default:

image_filter_interlace off;

context:http, server, location

This directive appeared in version 1.3.15.

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

syntax:image_filter_jpeg_quality quality;

default:

image_filter_jpeg_quality 75;

context:http, server, location

#增加了最终图像的清晰度。锐度百分比可以超过100。零值将禁用锐化。参数值可以包含变量。

syntax:image_filter_sharpen percent;

default:

image_filter_sharpen 0;

context:http, server, location

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

syntax:image_filter_transparency on|off;

default:

image_filter_transparency on;

context:http, server, location

image_filter resize width height;

Json:

品茶:这比例不知道具体怎么算的测一测。

nginx.conf:

---------------------------------------------------

location ~* /image {

image_filter resize 200 200;

}

---------------------------------------------------

测试数据过程:每次重启nginx 和清浏览器缓存并多次刷新

长>宽

Test1:

Test2:

长<宽

品茶:那么就容易理解了:

1、先进么判断长还是宽哪个像素占的多。

2、长/宽做成一个比例。

3、如果长占像素多就以长为标准,宽为比例。

4、如果宽占像素多就以宽为标准,长为比例。

模拟程序

1
2
3
4
5
6
7
l = get(jpg.l)
w = get(jpg.k)
g = l / w
if l > w:
    print nginx.l nginx.l/g
else:
    print nginx.w*w w

image_filter rotate 90 | 180 | 270;

品茶:只能用这三个值,不然nginx启动报错。分别是左转倒转和右转,逆时针的。

nginx.conf

---------------------------------------------------------

location ~* /image {

#image_filter resize 500 500;

image_filter rotate 90;

}

---------------------------------------------------------

逆时针90度 :90

逆时针180度:180

逆时针270度:270

那就明显了。

resize:图片完整,比例缩小。

crop:图片不完整,但完全按我们提供的来。

rotate:旋转图片。

测试一下test

test:

{ "img" : { "width": 1920, "height": 1200, "type": "jpeg" } }

test2:

{ "img" : { "width": 1920, "height": 1080, "type": "jpeg" } }

test3:

{ "img" : { "width": 354, "height": 586, "type": "png" } }

输出json格式,可以用来调用。

image_filter_buffer size;

我们试试超过1M的文件

415 Unsupported Media Type

品茶:这个值看你怎么设了,因为iphone现在拍的原图基本上是4-8M左右

image_filter_interlace on

品茶:渐进式jpeg没懂啥意思

image_filter_jpeg_quality quality; #quality:1-100

品茶:这个值控制图片的质量,影响清晰度

nginx.conf

-----------------------------------------------------------------

location ~* /image {

image_filter_jpeg_quality 20;

image_filter resize 500 500;

image_filter_buffer 10M;

image_filter_interlace on;

#image_filter rotate 20;

#image_filter crop 200 200;

#image_filter size;

#image_filter test;

}

------------------------------------------------------------------

品茶:这就是效果

image_filter_sharpen percent;

品茶:锐化比

image_filter_transparency on|off;

品茶:透明损失度

品茶:想了一下写几个规则,可能有用。

比如匹配全站所有的结尾图片

----------------------------------------------

location ~* \.(jpg|gif|png)$ {

image_filter resize 500 500;

}

----------------------------------------------

匹配某个目录所有图片

----------------------------------------------

location ~* /image/.*\.(jpg|gif|png)$ {

image_filter resize 500 500;

}

----------------------------------------------

再比如用url来指定

---------------------------------------------------

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {

set $width      $3;

set $height     $4;

rewrite "(.*\.(jpg|gif|png))(.*)$" $1;

}

location ~* .*\.(jpg|gif|png)$ {

image_filter resize $width $height;

}

---------------------------------------------------

那么效果是:

品茶:是不是很cool,哈哈,更新完毕了。

Nginx图片剪裁模块探究 http_image_filter_module的更多相关文章

  1. Nginx图片剪裁模块探究

    http://nginx.org/en/docs/http/ngx_http_image_filter_module.html http://cwtea.blog.51cto.com/4500217/ ...

  2. Windows下搭建Nginx图片服务器

    在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...

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

    http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时 ...

  4. nginx图片过滤处理模块http_image_filter_module

    nginx图片过滤处理模块http_image_filter_module安装配置笔记 http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54 ...

  5. nginx图片过滤处理模块http_image_filter_module安装配置

    http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时 ...

  6. Nginx使用图片处理模块

    Nginx可以编写很多额外的模块,这里我们需要按照能够通过URL响应返回缩放且含图片水印功能的模块. 1.安装一些使用过程中会用到的工具 yum install libgd2-devel yum in ...

  7. nginx图片处理

    前言 不管一个系统或网站的大与小,都存在相应的图片处理,生成缩略图.为图片加水印等等,如果涉及到APP端,这个图片的处理需求变得更加重要了,因为在目前看来,客户端的屏幕大小不一,会导致以下问题: 1. ...

  8. jQuery 图片剪裁插件使用之 imgAreaSelect

    插件主页:http://odyniec.net/projects/imgareaselect/ 官方网站上说明支持的浏览器:The plugin works in all major browsers ...

  9. nginx博客系统(内含nginx图片缩略图处理代码,不错)

    一直以来都在Qzone.CSDN等上面写博客,偶尔有些想法就在Paas平台上搭建服务,新浪和曾经的google上都用过其appengine.可是在别人的平台上写东西,总归有些不方便,有受制于人的感觉. ...

随机推荐

  1. java中的hashcode

    hashcode的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode.在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括 ...

  2. 阿里面试回来,想和Java程序员谈一谈(转载)

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  3. 网络流量监控工具----iftop

    文章转自:http://www.vpser.net/manage/iftop.html.再次本人只是作为笔记使用,不做其他用途. 日常工作中用它来监控网卡的实时流量,(可以指定网段),反向解析IP.显 ...

  4. NODE学习:利用nodeJS去抓网页的信息

    1:引用模块"http" (执行命令node app.js "http://www.baidu.com") //app.jsvar http = require ...

  5. Quartz 定时任务管理

    前言 将项目中的所有定时任务都统一管理吧,使用 quartz 定时任务 设计思路 使用 quartz 的相关jar 包,懒得去升级了,我使用的是 quart 1.6 写一个定时任务管理类 用一张数据库 ...

  6. Freemarker-数字默认格式化问题

    freemarker在解析数据格式的时候,默认将数字按3位来分割 例如1000被格式化为1,000 这样做看似美观,但在实际操作时候会带来问题.例如我一个页面有一个元素,该元素的值由后台绑定且超过10 ...

  7. Java设计模式-命令模式(Command)

    命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行.这个过程好在,三者相互解耦,任何一方都不用去依赖其 ...

  8. Java基础-字面值

    在Java源代码中,字面值用于表示固定的值(fixed value).数值型的字面值是最常见的,字符串字面值可以算是一种,当然也可以把特殊的null当做字面值.字面值大体上可以分为整型字面值.浮点字面 ...

  9. 图解Android - Zygote, System Server 启动分析

    Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的).用ps 输出可以看到 >adb shell ...

  10. BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)

    数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...