NodeJs + gm圖片縮略圖


我的另一篇文章: Nginx/Apache圖片縮略圖技術

gm官網

1, 軟件環境

nodejs
npm
GraphicsMagick or ImageMagick

貌似ImageMagick在處理大圖片時比GraphicsMagick要快很多。

2, gm的一些關鍵函數

//1, 使用方式
var gm = require('gm');
gm("圖片源路徑")
    .resize(200,0)     //設置壓縮后的w/h
    .setFormat('JPEG')
    .quality(70)       //設置壓縮質量: 0-100
    .strip()
    .autoOrient()
    .write("壓縮后保存路徑" , 
    function(err){console.log("err: " + err);})
//2, 獲取圖片尺寸
gm("圖片路徑").size(function(err,value){});
//3, 獲取圖片大小
gm("圖片路徑").filesize(function(err,value){});```

resize函數, 詳細參數
resize {w}x{h} {%} {@} {!} {<} {>}
這里需要注意第3個參數

%
表示按照width/height的百分比, resize(70, 0, '%')表示寬度為原先的70%

@
(×_×)表示不明白,貌似可以限制壓縮文件的filesize, gm文檔上是這樣描述的:
Use @ to specify the maximum area in pixels of an image.

**! **
表示強制width/height, resize(70, 70, '%')表示輸出圖片尺寸70x70,圖片可能變形

^
表示最小width/height, resize(70,70,'^')表示width/height最小不能小於70px

>
表示只有源圖片的width or height超過指定的width/height時,圖片尺寸才會變。
如:源圖片大小:640x640, resize(1000, 1000)最終圖片尺寸不變。

<
>正好相反,表示只有源圖片的width or height小於指定的width/height時,圖片尺寸才會變

gm默認使用GraphicsMagick處理圖片,如果你想使用ImageMagick,則:

var gm = require('gm');
var imageMagick = gm.subClass({ imageMagick: true })
//使用方式同上,把上面的gm(..)函數替換成imageMagick(..)函數即可


免責聲明!

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



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