发布
社区首页 >问答首页 >angular中的FabricJS自定义滤镜

angular中的FabricJS自定义滤镜
EN

Stack Overflow用户
提问于 2020-04-14 18:45:03
回答 1查看 201关注 0票数 1

我有二进制/灰度图像,我想过滤所有白色变为透明,所有深色变为某些用户特定颜色的图像。

我有一个问题,以创建自定义过滤器在角度。我找到的所有示例都是纯JavaScript的,演示页面不能使用http://fabricjs.com/image-filters

我试过的,从我掌握的信息来看:

代码语言:javascript
代码运行次数:0
复制
private canvas: fabric.Canvas;

constructor() { this.initializeNewFilter()  }

initializeNewFilter() {
  fabric.Image.filters['Redify'] = fabric.util.createClass(fabric.Image.filters.BaseFilter, {

  type: 'Redify',

  applyTo: function (canvasEl) {
    const context = canvasEl.getContext('2d');
    const imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height);
    const data = imageData.data;

    for (let i = 0, len = data.length; i < len; i += 4) {
      data[i + 1] = 0;
      data[i + 2] = 0;
    }
    context.putImageData(imageData, 0, 0);
  }
});

fabric.Image.filters['Redify'].fromObject = function (object) {
  return new fabric.Image.filters['Redify'](object);
};

}

即使在这个基本示例中,我也会得到错误:

代码语言:javascript
代码运行次数:0
复制
 ERROR TypeError: canvasEl.getContext is not a function

const context = canvasEl.getContext('2d') // getContext(“2d”)不存在,但canvasEl在此处

我也不知道如何通过自定义过滤器发送,有没有更好的解释?

EN

回答 1

Stack Overflow用户

发布于 2021-03-05 17:17:43

根据您使用的过滤引擎,fabric.Canvas2dFilterBackend()可以使用getContext。

试一试

代码语言:javascript
代码运行次数:0
复制
fabric.initFilterBackend = function() {      
    return (new fabric.Canvas2dFilterBackend());    
};

参考:FabricJS filtering overview

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61205861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档