跳到主要内容

HTML5 Canvas 自定义滤镜教程

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

本示例展示如何在 Konva 框架中使用自定义滤镜。

Filter 是一个以 Canvas ImageData 为输入的函数,它必须修改该数据。

function Filter(imageData) {
// do something with image data
imageData.data[0] = 0;
}

有关全部可用滤镜,请参阅 滤镜文档

有关自定义滤镜示例,另请参阅 图像边框示例

本示例将移除图像的全部透明度。

import Konva from 'konva';

// create our custom filter
Konva.Filters.RemoveAlpha = function (imageData) {
  const data = imageData.data;
  for (let i = 0; i < data.length; i += 4) {
    data[i + 3] = 255; // set alpha to 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';