Nginx的 http_image_filter_module 模块使用说明
Nginx图片处理原理
这里需要用到 nginx的 http_image_filter_module 模块,这个模块可以很方便的实现图片缩放功能,只是默认的情况下并不会安装,需要自己编译安装才能行。编译的时候./configure 增加 –with-http_image_filter_module 编译安装即可
Nginx图片处理的优缺点
优点
- 操作简单。通过简单配置,省去了后端裁剪程序的复杂性。
- 实时裁剪。可以实时访问在线裁剪图片。
- 灵活性强。后端程序裁剪图片时需要知道裁剪图片的尺寸和质量,使用nginx裁剪可以实时裁剪任意尺寸的图片。
- 不占用硬盘空间。
缺点
消耗CPU和内存,访问量大的时候就会给服务器带来很大的负担。(可以通过使用Nginx缓存和缓存服务器来解决)
功能不是很强大,支持的处理图片类型只包括JPEG, GIF, PNG, or WebP
Nginx图片处理模块指令使用
image_filter (重要)
设置要在图像上执行的转换类型
Syntax: | image_filter off; |
---|---|
image_filter test; | |
image_filter size; | |
image_filter rotate 90/180/270; | |
image_filter resize width height; | |
image_filter crop width height; | |
Default: | image_filter off; |
Context: | location |
test
确保响应图片是JPEG、GIF,WEBP或PNG格式,否则返回415错误码。
size
outputs information about images in a JSON format, e.g.:{ "img" : { "width": 100, "height": 100, "type": "gif" } }In case of an error, the output is as follows:{}
以 json 格式返回原图的尺寸和类型
rotate
逆时针旋转指定角度,只能指定这三个角度。参数值可以包含变量,这个模式可以单独使用也可以和resize、crop变换同时使用。
resize width height
按比例对图像进行缩放,可以只指定一个尺寸,另一个尺寸用“-”。如果遇到错误,服务器返回415错误码。参数值可以包含变量。当与rotate参数一同使用时,旋转操作发生在缩放之后。图片会以长的一边为标准,然后等比缩放。
crop width height
按比例裁剪图片,可以只指定一个尺寸,另一个尺寸用“-”。如果遇到错误,服务器返回415错误码。参数值可以包含变量。当与rotate参数一同使用时,旋转操作发生在裁剪之前。图片会以长的一边为标准,然后等比缩放,然后裁剪掉多余的部分。
image_filter_buffer
设置用于读取图像的缓冲区的最大大小
Syntax: | image_filter_buffer size; |
---|---|
Default: | image_filter_buffer 1M; |
Context: | http, server, location |
设置读取图片的最大缓冲区大小。当超过缓冲区大小时,返回 error 415 (Unsupported Media Type).
image_filter_interlace
如果启用,最终图像将隔行扫描
Syntax: | image_filter_interlace on / off; |
---|---|
Default: | image_filter_interlace off; |
Context: | http, server, location |
如果开启此功能,最终的图像是交错的。对于JPEG,最终图片是“渐进式JPEG”格式。图片一般是线性加载,设置后则变为交替加载图片。渐进式jpeg效果参见:http://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/
image_filter_jpeg_quality
设置转换JPEG图像的质量
Syntax: | image_filter_jpeg_quality quality; |
---|---|
Default: | image_filter_jpeg_quality 75; |
Context: | http, server, location |
设置转为JPEG图像的质量。接受的值从1到100。较小的值意味着低质的图片质量和更少的数据传输量。最大建议的值是95。参数可以包含变量。
image_filter_sharpen
通过设置锐化度,增加最终图像的清晰度。
Syntax: | image_filter_sharpen percent; |
---|---|
Default: | image_filter_sharpen 0; |
Context: | http, server, location |
增加最终图片的锐度。这个百分比可以超过100。0值禁用此功能。参数可以包含变量。
image_filter_transparency
定义是否透明度时应保留转换GIF图像或PNG图像的调色板中指定的颜色。
Syntax: | image_filter_transparency on/off; |
---|---|
Default: | image_filter_transparency on; |
Context: | http, server, location |
决定在转换GIF或PNG图片带有调色板定义的颜色时,透明是否会保留。丢失透明度可以是图片得到更好的质量。PNG的Alpha通道的透明总是会保留。
image_filter_webp_quality
设置转化WebP图像所需的质量
Syntax: | image_filter_webp_quality quality; |
---|---|
Default: | image_filter_webp_quality 80; |
Context: | http, server, location |
设置转为webp图像的质量。
This directive appeared in version 1.11.6.
局限性
Nginx 的图片处理模块,暂时没有看到官方发布的能够给图片加水印功能的模块,在github上看到有人写了些这样的扩展功能,参见 https://github.com/3078825/ngx_image_thumb
Nginx 的实时性和访问的方便性上,GraphicsMagick 是无法比拟的,但是 GraphicsMagick 对图片的处理的功能要比nginx强大很多,比如nginx不能将图片旋转任意角度,不能在图片上加水印,处理图片类型有限等,相对nginx,GraphicsMagick 更适合对图片的异步处理。
参考文献
Module ngx_http_image_filter_module
Nginx的 http_image_filter_module 模块使用说明相关推荐
- java centos 缩略图_使用 Nginx 的 image_filter 模块来构建动态缩略图服务器
原标题:使用 Nginx 的 image_filter 模块来构建动态缩略图服务器 在以前我们实现缩略图机制通常是在当用户上传一张图片后,后端程序会固定将图片生成前端页面需要的不同大小缩略图.不管前端 ...
- 1. nginx扩展——ngx_lua 模块简介、安装
1. 简介 lua-nginx-module(ngx_lua module)把 Lua5.1 的解释器 或 LuaJIT 2.0/2.1 的解释器嵌入到 nginx 中,将强大的 Lua 线程(L ...
- Nginx源码研究之nginx限流模块详解
这篇文章主要介绍了Nginx源码研究之nginx限流模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 高并发系统有三把利器:缓存.降级和限流: 限流的目的是通过对并 ...
- Nginx安装echo模块
echo-nginx-module 模块可以在Nginx中用来输出一些信息,可以用来实现简单接口或者排错. 项目地址:https://github.com/openresty/echo-nginx-m ...
- 宝塔nginx文件服务器,宝塔面板nginx编译webdav模块 – 建立webdav服务器
要想Nginx支持WebDAV,需要手动添加http_dav_module和nginx-dav-ext-module模块.http_dav_module模块是nginx默认的模块,但是也需要手动编译. ...
- FastDFS的配置、部署与API使用解读(7)Nginx的FastDFS模块(转)
1.Nginx的FastDFS模块什么作用? 我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传.下载.删除等操作.同时通过 FastDFS的HTT ...
- httpd开启status模块_Nginx高并发系列之二——Nginx开启ssl模块
在上一期中我们安装配置了nginx1.13.7版本并且成功启动,那么这一期就针对安装的Nginx支持ssl模块--即开启https功能.如果还有不知道如何安装与配置的请移至: 水番丘山:Nginx高并 ...
- Mac系统安装nginx+rtmp模块
1.安装命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install) ...
- linux第三方模块参数,nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)...
nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下),安装Nginx和HttpAccessKeyModule模块(参考LNMP环境 ...
最新文章
- IoT数据分析可能需要混合方法
- 开源android豆瓣电影阅读器
- python动态语言解释_python是动态语言吗
- oracle监听 客户 实例,oracle 数据库实例 监听
- NOI.AC#2139-选择【斜率优化dp,树状数组】
- <table/>默认适应内容宽度造成滚动条不显示的解决方法
- Node.js 多版本安装配置(Window、Ubuntu 、CentOS 、Mac OS、Cloud Studio)
- 算法笔记:简单的字符串模式匹配-BF算法
- python代码斜率_在Python中准确地测量代码执行时间
- java http 面试题_Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别面试题12期...
- 使用Python将数据插入数据库(一)
- 软件测试中什么是正交分析法,软件测试用例设计方法之正交分析法
- Google Earth Studio黑科技,教你一键制作震撼的地球俯冲航拍等视频素材
- Android 最常用的设计模式四 安卓源码分析——模板方法(Mould)
- Mockplus组件样式库一键解决风格复用
- 基线、底线、顶线、中线
- iOS超级签名系统源码及分析
- 解决问题:RuntimeError: the sip module implements API v11.0 to v11.2 but the module requires API v12.0
- 【UVM基础】CallBack机制快速上手指南
- 使用ResNet-50实现图像分类任务
热门文章
- JAVA三角形边长定义_Java编译:定义三角形的三条边长a=4,b=8.54,c=4.44;求三角形的周长d...
- docker 下载mysql 8.0_docker安装mysql8.0
- 神经网络深度(Deepth)的影响
- 历史课堂上的经典对白
- 使用Python评估Lil John的“拒绝做什么”
- 选择排序小程序(c语言)
- html 调用idm,如何对IDM进行自定义设置
- form窗口上放一个label,如何能找到这个label在哪个文件中使用
- 炉石胖枫抽到什么刀片服务器准系统整机主板,中速猎天下第一!老将胖枫喜提炉石传说青岛黄金赛大师组冠军...
- ubuntu显示器分辨率不对_Ubuntu安装事宜之一 — 屏幕分辨率问题