NodeJS尝试使用sharp进行图像卷积时未返回任何图像

时间:2016-09-02 03:39:22

标签: node.js image

我正在尝试将sobel滤镜应用于我的图像以检测边缘。我不知道自己做得很好 - 但我正在尝试。

我尝试使用sharp(https://github.com/lovell/sharp)将convolve运算符添加到图像中,如下所示:

sharp(body)
    .resize(1000)
    .greyscale()
    .convolve({
        width: 3,
        height: 3,
        kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1]
     })
    .webp()
    .toBuffer(function(err, buffer) {
        res.end(buffer, 'binary');
  });

当我添加.convolve()操作时,我看不到任何图片返回。当我删除它时,我像往常一样得到图像。我正在做的文档似乎建议http://sharp.readthedocs.io/en/stable/api/

我做错了什么?

编辑[Error: im_local_dmask: nonsense mask parameters]

之前console.log(err)我得到的错误为res.end()

1 个答案:

答案 0 :(得分:0)

原来问题是内核中的值添加到0我需要添加

scale: 1

到内核对象,然后一切正常。不确定这是一个错误还是只是误导性的文档。参见:

https://github.com/lovell/sharp/issues/561

使用以下代码,一切正常:

sharp(body)
    .resize(1000)
    .greyscale()
    .convolve({
        width: 3,
        height: 3,
        kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1],
        scale: 1
     })
    .webp()
    .toBuffer(function(err, buffer) {
        res.end(buffer, 'binary');
  });