使用nginx的http_image_filter模塊搭個(gè)圖片服務(wù)器

故事背景:
為了讓物理像素密度更高的iphone6s等手機(jī)享受高清圖片定制(同時(shí)普通手機(jī)對(duì)圖片的質(zhì)量可以降低),我們需要一個(gè)圖片服務(wù)器來(lái)實(shí)現(xiàn)以下的功能:
<blockquote>
我想,做的好的公司,都會(huì)有這么一個(gè)圖片服務(wù)器,通過(guò)url獲取參數(shù),然后可以控制圖片質(zhì)量,也可以將圖片裁剪成不同的尺寸。

所以我們只需上傳大圖(@2x),其余小圖都交給圖片服務(wù)器處理,我們只要負(fù)責(zé)拼接url即可。
</blockquote>

如,這樣一張?jiān)瓐D:

https://img.alicdn.com/tps/TB1AGMmIpXXXXafXpXXXXXXXXXX.jpg

可以類(lèi)似這樣,進(jìn)行圖片裁剪:
200×200

https://img.alicdn.com/tps/TB1AGMmIpXXXXafXpXXXXXXXXXX_200x200.jpg

100×100

https://img.alicdn.com/tps/TB1AGMmIpXXXXafXpXXXXXXXXXX_100x100.jpg

查閱之后發(fā)現(xiàn)nginx本身可以搞定。
http_image_filter的作用就是在路由這一步,由nginx幫你對(duì)圖片進(jìn)行處理,包括裁減啊縮放啊這樣的功能。返回一張?zhí)幚磉^(guò)的圖片。
這里跳過(guò)編譯的步驟(我的nginx是由運(yùn)維搭建的編譯進(jìn)去了這個(gè)模塊),高版本的nginx可以動(dòng)態(tài)加載該模塊。

下面開(kāi)始粘貼nginx中的相關(guān)配置:

location ~  \/testImage\/(\d+)\.(jpg)$ {

           set $h $arg_h;
           set $w $arg_w;
           #image_filter crop $h $w;
           image_filter resize $h $w;

 }

location ~ \/testImage\/(\d+)_(\d+)x(\d+)\.(jpg)$ {

      if ( -e $document_root/testFile/testImage/$1.$4 ) {
              rewrite '/(\d+)_(\d+)x(\d+)\.(jpg)$' /testFile/testImage/$1.$4?h=$2&w=$3 last;
      }
      return 404;
  }

   location ~* \.(jpg)$ {
   }

location的匹配規(guī)則和rewrite寫(xiě)法請(qǐng)參考這里

以上寫(xiě)法本身參考自這里。

需要強(qiáng)調(diào)的是其中判斷文件是否存在與rewrite讓我寫(xiě)了好半天,希望你可以深入理解跳過(guò)這個(gè)坑。

另外畢竟是cpu幫我們生成了新圖,并沒(méi)有將它保存下來(lái)。所以訪問(wèn)量大的時(shí)候是一種消耗。有文章介紹結(jié)合Fastdfs一起可以解決這個(gè)問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開(kāi)發(fā) 開(kāi)源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,234評(píng)論 1 6
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • Page 1:nginx 服務(wù)器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,673評(píng)論 1 41
  • 父親節(jié)的夜晚我獨(dú)在小院躑躅 舉頭向天只見(jiàn)月亮失聯(lián)陰云密布 三兩顆小星弱弱地展示著它們的孤獨(dú) 那里是否躲藏著一個(gè)不為...
    唯一還是我閱讀 272評(píng)論 0 10
  • 1、活動(dòng)主持人的開(kāi)場(chǎng)技巧。 會(huì)議主持人在會(huì)議上的表達(dá)是否受與會(huì)者歡迎,將取決于與會(huì)者對(duì)其的初步印象。這個(gè)初步印象包...
    策劃人曾宣潭閱讀 865評(píng)論 0 4

友情鏈接更多精彩內(nèi)容