FastDFS通過nginx實現圖片壓縮裁剪配置


 圖片壓縮裁剪

利用Nginx的image_filter模塊實現:

nginx_http_image_filter_module在nginx 用於對JPEG, GIF和PNG圖片進行轉換處理(壓縮圖片、裁剪圖片、旋轉圖片)。這個模塊默認不被編譯,所以要在編譯nginx源碼的時候,加入相關配置信息

(1)安裝gd,HttpImageFilterModule模塊需要依賴gd-devel的支持

yum -y install gd-devel

(2)編譯安裝nginx

wget http://nginx.org/download/nginx-1.15.4.tar.gz #下載nginx壓縮包
tar -zxvf nginx-1.15.4.tar.gz #解壓
cd nginx-1.15.4/
./configure --prefix=/usr/nginx-1.15 \
--with-http_gzip_static_module \
--add-module=/usr/local/src/fastdfs-nginx-module/src/ \ #添加fastdfs-nginx-module模塊
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module 添加http_image_filter_module,實現圖片壓縮裁剪
make && make install

(3)編輯nginx.conf文件

server {
    listen       8888;    ## 該端口為storage.conf中的http.server_port相同
    server_name  localhost;

    location ~group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg){ # .表示除\n外的任意字符 +表示1-正無窮 \d表示數字
            alias /data/dfs/data/; #設置別名
             ngx_fastdfs_module;
             set $w $2; #正則表達式匹配的第二個參數,此處為第一個(\d+)
             set $h $3;
             if ($w != "0") {
                  rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg)$ group1/M00$1.$4 break;
              }set $h $3;
             if ($h != "0") {
                  rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg)$ group1/M00$1.$4 break;
              }
            image_filter resize $w $h;
            image_filter_buffer 50M; ##原圖最大50M,要裁剪的圖片超過2M返回415錯誤
        }

    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}

如下添加裁剪的參數進行裁剪

http://file.test.com:8888/group1/M00/00/00/rBIAA10ljqWAMV-zAABdrSqbHGQ439_400x200.jpg

其他參數配置

 image_filter off;
 #關閉模塊
 
 image_filter test;
 #確保圖片是jpeg gif png否則返415錯誤
 
 image_filter size;
 #輸出有關圖像的json格式:例如以下顯示{ "img" : { "width": 100, "height": 100, "type": "gif" } } 出錯顯示:{}
 
 
 image_filter rotate 90|180|270;
 #旋轉指定度數的圖像,該度數只能是90, 180, 270,參數能夠包括變量,單獨或一起與resize crop一起使用。
 
 image_filter resize width height;
 #按比例降低圖像到指定大小,公降低一個能夠還有一個用"-"來表示,出錯415,參數值可包括變量,能夠與rotate一起使用,則兩個一起生效。 
 
 image_filter crop width height;
 #按比例降低圖像比較大的側面積和還有一側多余的載翦邊緣,其他和rotate一樣。
 
 image_filter_buffer 10M;
 #設置讀取圖像緩沖的最大大小,超過則415錯誤。
 
 image_filter_interlace on;
 #如果啟用,最終圖像將交錯。對於JPEG,最終圖像將采用 "逐行JPEG" 格式
 
 
 image_filter_jpeg_quality 95;
 #設置變換的JPEG圖像的期望質量。可接受的值是從1到100的范圍內。較小的值通常意味着既降低圖像質量,降低數據傳輸,推薦的最大值為95。參數值能夠包括變量。
 
 
 image_filter_sharpen 100;
 #添加了最終圖像的清晰度。銳度百分比能夠超過100。零值將禁用銳化。參數值能夠包括變量。
 
 
 image_filter_transparency on;
 #定義是否應該透明轉換的GIF圖像或PNG圖像與調色板中指定的顏色時,能夠保留。透明度的損失將導致更好的圖像質量。在PNG的Alpha通道總是保留透明度。

參考:https://blog.csdn.net/u012965203/article/details/96651061


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM