"我現(xiàn)在是有些圖片需要生成縮略圖,這個現(xiàn)在加了image_filter這個已經(jīng)實現(xiàn)了,但我不知道怎么樣才能訪問我上傳的原圖" 剛開始覺得也不太好弄,讓他用程序區(qū)處理,實際上稍微動腦筋分析一下也可以不修改程序?qū)崿F(xiàn)動態(tài)生成縮略圖且能夠訪問原圖。 前提是需要定好圖片的訪問規(guī)則。 先來看一下什么是nginx的image filter模塊。 HttpImageFilterModule用來裁剪過大的圖片到指定大小,是nginx自帶模塊,默認不會開啟 該模塊主要有兩個指令: 該指令指定圖像的轉(zhuǎn)化形式: test - 測試回復(fù)是否是JPEG、GIF、或PNG圖片(不支持BMP等其他格式),出錯時返回415。 語法: image_filter_buffer size 該指令設(shè)置單圖片緩存的最大值,如果過濾的圖片大小超過緩存大小,會報錯返回415。 現(xiàn)在開始時重點: 有了如上認識再配合locaiont、if、image_filter 就可以讓nginx動態(tài)生成縮略圖了。 假設(shè)你的圖片位于/img目錄下 訪問縮略圖方式 http://www./img/9GUMJR7200AJ0003_90x90.jpg 訪問原圖方式 http://www./img/9GUMJR7200AJ0003_90x0.jpg http://www./img/9GUMJR7200AJ0003_0x50.jpg http://www./img/9GUMJR7200AJ0003_0x0.jpg http://www./img/9GUMJR7200AJ0003.jpg 添加如下配置到server上下文即可 location ~* /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ { set $h $2; set $w $3; if ($h = "0") { rewrite /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /img/$1.$4 last; } if ($w = "0") { rewrite /img/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /img/$1.$4 last; } #根據(jù)給定的長寬生成縮略圖 image_filter resize $h $w; #原圖最大2M,要裁剪的圖片超過2M返回415錯誤,需要調(diào)節(jié)參數(shù)image_filter_buffer image_filter_buffer 2M; #error_page 415 /img/notfound.jpg; try_files /img/$1.$4 /img/notfound.jpg; } location ~* /img { } 推薦閱讀: http://wiki./HttpImageFilterModule http:///en/docs/http/ngx_http_image_filter_module.html http://cwtea.blog.51cto.com/4500217/1333142轉(zhuǎn)自:http://www./2160.html |
|