【发布时间】:2020-03-22 15:02:14
【问题描述】:
我想为我的网站实现背景橡皮擦功能。 我为此使用画布。我可以将图像数据放入画布并从画布中获取图像数据。
我已经实现了从特定位置移除颜色的洪水填充算法。
我在这里试了一下:
`http://jsfiddle.net/Mark_1998/boz43x87/`
在我谷歌太多之后,我发现这个算法没有去除黑色,
作为填充算法的规则,如果目标颜色和替换颜色相同,则返回函数(不再处理)。
在我的情况下,在这里做的完全一样。 简而言之:
- 目标颜色:rgba(255,0,0,145) -> 替换颜色:rgba(0,0,0,0); -> 工作正常(去除红色并设置透明黑色)。
- 目标颜色:rgba(0,0,0,255) -> 替换颜色:rgba(0,0,0,0) =>不能正常工作(原因:我只检查三种颜色,即 R、G、B)
有什么方法可以将颜色与它的 alpha 值匹配吗?
如果我用任何其他颜色替换新颜色(替换颜色),那么当目标颜色与替换颜色相同时,它不会从图像中删除该颜色。例如我设置了替换颜色 rgba(255,255,255,0) 而不是 rgba(0,0,0,0),然后它会从图像中很好地去除黑色,但不能从图像中去除白色。
删除该颜色的唯一方法是使用其 Alpha 值查找颜色的距离。但我不知道如何找到那个距离。
请帮帮我。
【问题讨论】:
标签: canvas flood-fill