微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用JS将图像制作成具有透明背景的轮廓

如何解决如何使用JS将图像制作成具有透明背景的轮廓

Original Image

Result

1 -> 原始图片

2 -> 图片上传后的结果:

我正在尝试将原始图片转换为黑色轮廓透明,如下图所示。

我正在为我的项目使用 Konva JS 库,但我无法使用 Konva.js 实现此功能

请提出实现以下功能的建议。

解决方法

您可以根据需要使用 Konva Custom Filter 处理图像。

以下是用透明像素替换白色的示例:


// lets define a custom filter:
var MyFilter = function (imageData) {
  const tol = 10;
  // make all pixels opaque 100%
  var nPixels = imageData.data.length;
  const { data } = imageData;
  for (var i = 0; i < nPixels - 4; i += 4) {
    const isWhite =
      data[i] > 255 - tol &&
      data[i + 1] > 255 - tol &&
      data[i + 2] > 255 - tol;
    if (isWhite) {
      imageData.data[i + 3] = 0;
    } else {
      // you can replace black with another color
    }
  }
};

Konva.Image.fromURL("./lion.jpeg",function (image) {
  layer.add(image);
  image.setAttrs({
    x: 80,y: 30,draggable: true
  });

  image.filters([MyFilter]);
  image.cache();

  layer.draw();
});

演示:https://codesandbox.io/s/konva-remove-white-example-fw6fz?file=/index.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。