圖片壓縮裁剪
利用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