我有二进制/灰度图像,我想过滤所有白色变为透明,所有深色变为某些用户特定颜色的图像。
我有一个问题,以创建自定义过滤器在角度。我找到的所有示例都是纯JavaScript的,演示页面不能使用http://fabricjs.com/image-filters。
我试过的,从我掌握的信息来看:
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);
};
}
即使在这个基本示例中,我也会得到错误:
ERROR TypeError: canvasEl.getContext is not a function
const context = canvasEl.getContext('2d')
// getContext(“2d”)不存在,但canvasEl在此处
我也不知道如何通过自定义过滤器发送,有没有更好的解释?
发布于 2021-03-05 17:17:43
根据您使用的过滤引擎,fabric.Canvas2dFilterBackend()可以使用getContext。
试一试
fabric.initFilterBackend = function() {
return (new fabric.Canvas2dFilterBackend());
};
https://stackoverflow.com/questions/61205861
复制相似问题