问题描述
我使用 Konvajs 过滤器让用户能够更改图像的亮度、对比度和灰度。 根据 KonvaJs 示例,我使用的输入滑块效果很好。 对于亮度和对比度,我正在使用:
image.filters([Konva.Filters.Brighten,Konva.Filters.Contrast]);
但对于灰度,我使用输入滑块作为开/关开关和以下过滤器:
image.filters([Konva.Filters.Grayscale]);
因此,当用户将灰度开关设置为“开”时,我可以调用灰度过滤器。 但是,如果用户随后将灰度切换为“关闭”,则似乎无法取消此过滤器。
image.filters([]);
然后重新调用亮度和对比度过滤器到先前设置的值。 有没有办法简单地取消灰度滤镜?
解决方法
删除 Konva.Node
过滤器的唯一方法是将其从 filters
属性中删除。因此,如果您想重置过滤器或启用/禁用它们,您应该执行以下操作:
const filters = [];
if (needBrighten) {
filters.push(Konva.Filters.Brighten);
}
if (needContrast) {
filters.push(Konva.Filters.Contrast);
}
if (needGrayscale) {
filters.push(Konva.Filters.Grayscale);
}
node.filters(filters);
您可能需要从输入中检测 needBrighten
等变量。