【发布时间】:2011-03-19 07:01:58
【问题描述】:
编辑:我不一定需要解决这个问题——我想了解为什么它会发生。我不明白为什么我应该得到下面的奇怪结果......
虽然这个问题是针对我在使用 HTML5 画布应用程序时遇到的问题,但我认为这个问题不太具体。
我有一个 HTML5 画布应用程序,可让您在屏幕上标记图像。这些图像是 32 位 PNG,所以我正在使用透明度。如果我在同一位置多次(大约 100 次)标记高度透明的图像,我最终会得到绝对糟糕的结果:
我用作图章的图像的颜色是RGB(167, 22, 22),我要压印的背景是RGB(255, 255, 255)。这是源图片,如果有人感兴趣的话:
如您所知,图像的 Alpha 级别非常低。可能是2/255 to 5/255 左右。我期望会发生的是,如果您将图像标记重复应用到画布足够多次,您将获得颜色像素RGBA(167, 22, 22, 255)。不幸的是,我得到了混杂的颜色,包括一些非常奇怪的灰色区域,值为RGB(155, 155, 155)。
我刚刚加载了 Excel 并插入了源-over alpha 混合方程 (Wikipedia reference),经过足够多的迭代后,我似乎收敛到了 RGB(167, 22, 22)。我可能遗漏了一些关于 alpha 混合操作以及 HTML5 画布如何实现 source-over 合成的基本知识......有人可以帮我理顺吗?
谢谢!
注意:this question 与我的问题类似,但我不太明白为什么会得到我在此处发布的结果。
【问题讨论】:
-
您是否尝试过您所说的与您的问题接近的问题的公认答案?看来该解决方案也可能对您有用。
-
@James Black 我没有。我真的不明白为什么缺乏精确度,这反过来又让我看不到如何解决问题。如果我使用 source-over alpha 混合方程,最终我会得到我想要的颜色——但这不是 HTML5 画布发生的事情......?
-
你能发布另一个图片链接吗? imgur 不再提供它
-
@sinelaw 当然,我刚刚为你重新上传了。
-
谢谢。顺便说一句,你最后做了什么?
标签: html graphics canvas pixel blend