Skip to main content

HTML5 Canvas 自定义滤镜教程

如何为 Konva 节点应用自定义滤镜?

这个示例演示了如何在 Konva 框架中使用自定义滤镜。

滤镜 是一个函数,它以画布的 ImageData 为输入,并应当对其进行修改。

function Filter(imageData) {
// 对图像数据进行处理
imageData.data[0] = 0;
}

有关所有可用滤镜的信息,请访问 滤镜文档

还可以查看 图像边框示例 以获取自定义滤镜示例。

在这个示例中,我们将移除图像的所有透明度。

import Konva from 'konva';

// 创建自定义滤镜
Konva.Filters.RemoveAlpha = function (imageData) {
  const data = imageData.data;
  for (let i = 0; i < data.length; i += 4) {
    data[i + 3] = 255; // 将 alpha 设置为 1
  }
};

const stage = new Konva.Stage({
  container: 'container',
  width: window.innerWidth,
  height: window.innerHeight,
});

const layer = new Konva.Layer();
stage.add(layer);

const imageObj = new Image();
imageObj.onload = () => {
  const image = new Konva.Image({
    x: 50,
    y: 50,
    image: imageObj,
    draggable: true,
  });

  layer.add(image);

  image.cache();
  image.filters([Konva.Filters.RemoveAlpha]);
};
imageObj.src = 'https://konvajs.org/assets/lion.png';
imageObj.crossOrigin = 'anonymous';