在内存中调整GraphicsMagick图像的大小

时间:2016-02-28 12:43:07

标签: node.js image memory graphicsmagick

我想使用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)和大小?

1 个答案:

答案 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;