Nginx的 http_image_filter_module 模块使用说明
Nginx圖片處理原理
這里需要用到 nginx的 http_image_filter_module 模塊,這個(gè)模塊可以很方便的實(shí)現(xiàn)圖片縮放功能,只是默認(rèn)的情況下并不會(huì)安裝,需要自己編譯安裝才能行。編譯的時(shí)候./configure 增加 –with-http_image_filter_module 編譯安裝即可
Nginx圖片處理的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
缺點(diǎn)
消耗CPU和內(nèi)存,訪問(wèn)量大的時(shí)候就會(huì)給服務(wù)器帶來(lái)很大的負(fù)擔(dān)。(可以通過(guò)使用Nginx緩存和緩存服務(wù)器來(lái)解決)
功能不是很強(qiáng)大,支持的處理圖片類型只包括JPEG, GIF, PNG, or WebP
Nginx圖片處理模塊指令使用
image_filter (重要)
設(shè)置要在圖像上執(zhí)行的轉(zhuǎn)換類型
| 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
確保響應(yīng)圖片是JPEG、GIF,WEBP或PNG格式,否則返回415錯(cuò)誤碼。
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
逆時(shí)針旋轉(zhuǎn)指定角度,只能指定這三個(gè)角度。參數(shù)值可以包含變量,這個(gè)模式可以單獨(dú)使用也可以和resize、crop變換同時(shí)使用。
resize width height
按比例對(duì)圖像進(jìn)行縮放,可以只指定一個(gè)尺寸,另一個(gè)尺寸用“-”。如果遇到錯(cuò)誤,服務(wù)器返回415錯(cuò)誤碼。參數(shù)值可以包含變量。當(dāng)與rotate參數(shù)一同使用時(shí),旋轉(zhuǎn)操作發(fā)生在縮放之后。圖片會(huì)以長(zhǎng)的一邊為標(biāo)準(zhǔn),然后等比縮放。
crop width height
按比例裁剪圖片,可以只指定一個(gè)尺寸,另一個(gè)尺寸用“-”。如果遇到錯(cuò)誤,服務(wù)器返回415錯(cuò)誤碼。參數(shù)值可以包含變量。當(dāng)與rotate參數(shù)一同使用時(shí),旋轉(zhuǎn)操作發(fā)生在裁剪之前。圖片會(huì)以長(zhǎng)的一邊為標(biāo)準(zhǔn),然后等比縮放,然后裁剪掉多余的部分。
image_filter_buffer
設(shè)置用于讀取圖像的緩沖區(qū)的最大大小
| Default: | image_filter_buffer 1M; |
| Context: | http, server, location |
設(shè)置讀取圖片的最大緩沖區(qū)大小。當(dāng)超過(guò)緩沖區(qū)大小時(shí),返回 error 415 (Unsupported Media Type).
image_filter_interlace
如果啟用,最終圖像將隔行掃描
| Default: | image_filter_interlace off; |
| Context: | http, server, location |
如果開(kāi)啟此功能,最終的圖像是交錯(cuò)的。對(duì)于JPEG,最終圖片是“漸進(jìn)式JPEG”格式。圖片一般是線性加載,設(shè)置后則變?yōu)榻惶婕虞d圖片。漸進(jìn)式j(luò)peg效果參見(jiàn):http://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/
image_filter_jpeg_quality
設(shè)置轉(zhuǎn)換JPEG圖像的質(zhì)量
| Default: | image_filter_jpeg_quality 75; |
| Context: | http, server, location |
設(shè)置轉(zhuǎn)為JPEG圖像的質(zhì)量。接受的值從1到100。較小的值意味著低質(zhì)的圖片質(zhì)量和更少的數(shù)據(jù)傳輸量。最大建議的值是95。參數(shù)可以包含變量。
image_filter_sharpen
通過(guò)設(shè)置銳化度,增加最終圖像的清晰度。
| Default: | image_filter_sharpen 0; |
| Context: | http, server, location |
增加最終圖片的銳度。這個(gè)百分比可以超過(guò)100。0值禁用此功能。參數(shù)可以包含變量。
image_filter_transparency
定義是否透明度時(shí)應(yīng)保留轉(zhuǎn)換GIF圖像或PNG圖像的調(diào)色板中指定的顏色。
| Default: | image_filter_transparency on; |
| Context: | http, server, location |
決定在轉(zhuǎn)換GIF或PNG圖片帶有調(diào)色板定義的顏色時(shí),透明是否會(huì)保留。丟失透明度可以是圖片得到更好的質(zhì)量。PNG的Alpha通道的透明總是會(huì)保留。
image_filter_webp_quality
設(shè)置轉(zhuǎn)化WebP圖像所需的質(zhì)量
| Default: | image_filter_webp_quality 80; |
| Context: | http, server, location |
設(shè)置轉(zhuǎn)為webp圖像的質(zhì)量。
This directive appeared in version 1.11.6.
局限性
Nginx 的圖片處理模塊,暫時(shí)沒(méi)有看到官方發(fā)布的能夠給圖片加水印功能的模塊,在github上看到有人寫(xiě)了些這樣的擴(kuò)展功能,參見(jiàn) https://github.com/3078825/ngx_image_thumb
Nginx 的實(shí)時(shí)性和訪問(wèn)的方便性上,GraphicsMagick 是無(wú)法比擬的,但是 GraphicsMagick 對(duì)圖片的處理的功能要比nginx強(qiáng)大很多,比如nginx不能將圖片旋轉(zhuǎn)任意角度,不能在圖片上加水印,處理圖片類型有限等,相對(duì)nginx,GraphicsMagick 更適合對(duì)圖片的異步處理。
參考文獻(xiàn)
Module ngx_http_image_filter_module
總結(jié)
以上是生活随笔為你收集整理的Nginx的 http_image_filter_module 模块使用说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2018 dota2 战队十杀分析
- 下一篇: 因为AI,所以爱