在 sharp js 中是否有类似 imagemagick OilPaint 过滤器的类似功能来平滑边缘?

Is in sharp js a similar function like imagemagick OilPaint filter for smoothing edges?

我用的是图像处理sharp-js。过去我使用 imagemagick。有一个很好的函数 OilPaint 可以平滑边缘。即在 perl

 $error = $image->[0]->OilPaint( radius => 0 )

现在我想从 perl + imagemagick 迁移到 node + sharp-js。

如何在 sharp-js 中平滑边缘?

sharpjs 中有 none 滤镜,就像 imagemagik 中的 OilPaint。但是结合使用 sharp-js 和 graphicsmagick(它使用 imagemagik)没问题,即

await sharp("cat.png")
    .extract({
      left: ankerX,
      top: ankerY,
      width: sizeX,
      height: sizeY,
    })
    .toFile("cat_section.png");

await gm("cat_section.png")
    .paint(1)
    .write("cat_section_oil.png", function (err) {
      if (err) console.log(err);
      console.log("Oil Done!");
    });

如果需要,您可以轻松编写自己的过滤器。您可以在此处找到一些有用的代码 + 说明 Apply a Oil Paint/Sketch effect to a photo using Javascript