我想使用GraphicsMagick在内存中调整图像大小,使用Node.js的gm
包。
我试过了:
const gm = require("gm");
gm("octocat.jpg").resize(240, 240).size(function (err, data) {
console.log(err || data);
// => { width: 896, height: 896 }
});
我认为gm
将初始文件数据存储在内存中,并准备运行gm
进程的选项。
但是我如何调整内存中的对象大小并获得调整大小的图像的新缓冲区(.toPNGBuffer
)和大小?
答案 0 :(得分:0)
尝试使用node-canvas:https://github.com/Automattic/node-canvas
node-canvas extends the canvas API to provide interfacing with node,
for example streaming PNG data, converting to a Buffer instance, etc.
示例:
fs.readFile(__dirname + '/images/squid.png', function(err, squid){
if (err) throw err;
img = new Image;
img.src = squid;
ctx.drawImage(img, 0, 0, img.width / 4, img.height / 4);
});
此外,Canvas 比ImageMagic快3倍。
您可以尝试比较Node.js模块以进行图像处理 - https://github.com/ivanoff/images-manipulation-performance
author's results:
canvas.js : 4.001 img/sec;
gm-imagemagic.js : 1.206 img/sec;
gm.js : 1.536 img/sec;
lwip.js : 0.406 img/sec;