Nginx的 http_image_filter_module 模块使用说明
Nginx圖片處理原理
這里需要用到 nginx的 http_image_filter_module 模塊,這個模塊可以很方便的實現圖片縮放功能,只是默認的情況下并不會安裝,需要自己編譯安裝才能行。編譯的時候./configure 增加 –with-http_image_filter_module 編譯安裝即可
Nginx圖片處理的優缺點
優點
缺點
消耗CPU和內存,訪問量大的時候就會給服務器帶來很大的負擔。(可以通過使用Nginx緩存和緩存服務器來解決)
功能不是很強大,支持的處理圖片類型只包括JPEG, GIF, PNG, or WebP
Nginx圖片處理模塊指令使用
image_filter (重要)
設置要在圖像上執行的轉換類型
| 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
設置用于讀取圖像的緩沖區的最大大小
| Default: | image_filter_buffer 1M; |
| Context: | http, server, location |
設置讀取圖片的最大緩沖區大小。當超過緩沖區大小時,返回 error 415 (Unsupported Media Type).
image_filter_interlace
如果啟用,最終圖像將隔行掃描
| 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圖像的質量
| Default: | image_filter_jpeg_quality 75; |
| Context: | http, server, location |
設置轉為JPEG圖像的質量。接受的值從1到100。較小的值意味著低質的圖片質量和更少的數據傳輸量。最大建議的值是95。參數可以包含變量。
image_filter_sharpen
通過設置銳化度,增加最終圖像的清晰度。
| Default: | image_filter_sharpen 0; |
| Context: | http, server, location |
增加最終圖片的銳度。這個百分比可以超過100。0值禁用此功能。參數可以包含變量。
image_filter_transparency
定義是否透明度時應保留轉換GIF圖像或PNG圖像的調色板中指定的顏色。
| Default: | image_filter_transparency on; |
| Context: | http, server, location |
決定在轉換GIF或PNG圖片帶有調色板定義的顏色時,透明是否會保留。丟失透明度可以是圖片得到更好的質量。PNG的Alpha通道的透明總是會保留。
image_filter_webp_quality
設置轉化WebP圖像所需的質量
| 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 模块使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018 dota2 战队十杀分析
- 下一篇: 【Nginx学习01】--Nginx的安