缺少图像文件名ImageMagick转换仅从Node.js运行

时间:2014-11-12 09:52:52

标签: node.js imagemagick imagemagick-convert

我构建了一个小脚本,首先将8个图块拼接在一起,然后将其缩小,然后必须扭曲图像。

一切都按照计划进行,直到扭曲的部分。

this.distort = function(filename) {
  var distortDeferred = Q.defer();

  var totalWidth = width * waves * 2,
      totalHeight = height * waves * 2;

  var params = [
    filename,
    '-matte',
    '-virtual-pixel',
    'transparent',
    '-distort',
    'Perspective "{left},{top} {newLeft},{top}   {left},{bottom} {left},{bottom}   {right},{bottom} {right},{bottom}    {right},{top} {newRight},{top}"'.assign({
      left: 0,
      top: 0,
      newLeft: totalWidth * distortPercentage,
      bottom: totalHeight,
      right: totalWidth,
      newRight: totalWidth - totalWidth * distortPercentage
    }),
    filename
  ];

  im.convert(params, function() {
    console.log(arguments);
  });

  return distortDeferred.promise;
};

以下函数将给出错误:

Error: Command failed: convert: missing an image filename `tmp/5458f2e3d6840bb65ba6100f.png' @ error/convert.c/ConvertImageCommand/3184.

在命令行上运行完全相同的操作,将具有所需的输出。

我可能犯的错误以及我已经测试过:

  • 两个图像转换,同时转换图像
  • 非现有图片
  • 未正确设置图片的文件权限
  • 缺少ImageMagick的插件

两个图像转换,同时转换图像

所有事情都是以延迟和承诺完成的,因此两个请求同时运行是不可能的,以确保在调用扭曲函数之前设置了2000ms的超时。也没有帮助。

不存在的图片

使用fs.fileExists对此进行了测试。结果与预期一致。

未正确设置图片的文件权限

为了安全起见,我在文件夹上尝试了chmod -R 777 folder。结果与预期一致。

缺少ImageMagick的插件

经过一些谷歌搜索后,我遇到了一些没有安装相应插件并收到与我相同的错误的人。

显然它缺少JPEG库或PNG,see error here

所以在运行identify -list format之后,很明显我安装了相应的库来完成这样的操作。

概要

我认为错误也可能在节点而不是ImageMagick中找到,因为操作从命令行运行没有问题。

0 个答案:

没有答案