NodeJS处理远程图像而不下载它

时间:2014-02-04 14:41:59

标签: node.js image-processing

在NodeJS中,我需要创建一个用于远程图像处理的API。使用图像的URL我需要获取所有相关数据(宽度,高度,文件大小等),然后使用Graphics magick等库来处理它。问题是,gm总是返回此错误

{[错误:产生ENOENT]代码:'ENOENT',错误:'ENOENT',系统调用:'spawn'}

我使用的代码是

request.get(imageUrl, function (err, res, body) {

   var buffer = new Buffer(body,'binary');

   gm(buffer)
    .size(function (err, size) {
      if (!err) {
        console.log('width = ' + size.width);
        console.log('height = ' + size.height);
      } else
        console.log(err)
    });


});

问题是:如何在不下载图像的情况下处理图像?

1 个答案:

答案 0 :(得分:0)

不同图像文件格式的图像元数据没有通用规范。因此,在大多数情况下,您将不得不依赖远程服务器的API为您提供图像元数据,而无需提供完整的图像信息,或者 - 您希望避免这种情况 - 只需获取完整图像并自行进行计算。 如果您不需要立即获得确切的图像尺寸或比例,则可以通过发送HTTP HEAD 请求并解释 Content-Type Content-来估算它们。长度 HTTP响应标头。

关于 ENOENT 错误,似乎这可能是关于缺少数据( body 设置正确吗?)还是缺少ImageMagick安装:Error: spawn ENOENT while using GM in node