【发布时间】:2015-08-15 23:10:44
【问题描述】:
我正在尝试实现一种在 HTML5 画布中产生抗锯齿边缘的填充算法。
我的初始输入是一个ImageData 对象,其中包含透明背景上重叠的圆圈和线条的轮廓。轮廓已经抗锯齿,并且我有边缘的实际颜色(rgba(51, 51, 51, 255)),以及通过对形状进行抗锯齿产生的一些灰度“边缘”像素(使用rgba(48, 48, 48, 32) 和rgba(54, 54, 54, 200) 之类的值)。
我当前的洪水填充实现知道这些边缘像素,但它只是将填充颜色应用于它们 - 导致像素化。我还尝试应用 this answer 的 alpha 混合,也导致像素化。
您会推荐什么算法通过混合这些边缘像素的颜色和填充颜色来生成平滑边缘?
【问题讨论】:
-
附带问题:对于抗锯齿,是否足以改变 alpha ?您可以构建泛光填充的抗锯齿版本(边框具有相同的 rgb,但 alpha 与像素内填充的空间成比例),然后将其添加到圆/线的绘图中。
标签: javascript algorithm html5-canvas antialiasing flood-fill