【问题标题】:How to remove color using mouse click on canvas?如何使用鼠标在画布上单击来去除颜色?
【发布时间】:2020-03-22 15:02:14
【问题描述】:

我想为我的网站实现背景橡皮擦功能。 我为此使用画布。我可以将图像数据放入画布并从画布中获取图像数据。

我已经实现了从特定位置移除颜色的洪水填充算法。

我在这里试了一下:

`http://jsfiddle.net/Mark_1998/boz43x87/`

在我谷歌太多之后,我发现这个算法没有去除黑色,

作为填充算法的规则,如果目标颜色和替换颜色相同,则返回函数(不再处理)。

在我的情况下,在这里做的完全一样。 简而言之:

  1. 目标颜色:rgba(255,0,0,145) -> 替换颜色:rgba(0,0,0,0); -> 工作正常(去除红色并设置透明黑色)。
  2. 目标颜色: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


    【解决方案1】:

    您可以使用 globalAlpha 属性更改 alpha 值。

    ctx.globalAlpha = 0;
    

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 2011-09-22
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多