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

{[错误:spawn 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)
    });


});


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

最佳答案

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

关于ENOENT错误,似乎这可能与丢失数据(主体是否正确设置?)或丢失ImageMagick安装有关:Error: spawn ENOENT while using GM in node

10-07 14:10
查看更多