【问题标题】:How to mix two ARGB pixels?如何混合两个 ARGB 像素?
【发布时间】:2010-12-28 23:34:52
【问题描述】:

如何混合两个 ARGB 像素?

例子

这里 A 是(带 Alpha 的红色),B 是(带 Alpha 的蓝色)。

【问题讨论】:

标签: graphics alpha rgba


【解决方案1】:

取自您获得图片的同一篇 Wikipedia 文章:

转换为 0 到 255 范围内的值:

rOut = (rA * aA / 255) + (rB * aB * (255 - aA) / (255*255))
gOut = (gA * aA / 255) + (gB * aB * (255 - aA) / (255*255))
bOut = (bA * aA / 255) + (bB * aB * (255 - aA) / (255*255))
aOut = aA + (aB * (255 - aA) / 255)

【讨论】:

  • 我认为这个公式在发布时可能是错误的。从现在的文章来看,您仍然需要除以混合 alpha。在类 TEX 表示法中:C_o = \frac{C_a \alpha_a + C_b \alpha_b (1 - \alpha_a)}{\alpha_a + \alpha_b(1 - \alpha_a)}
  • @Calculuswhiz 我不知道你在说什么。原始公式是由维基媒体托管的图像,它仍然与我发布它的那天一样有效。您的编辑是相同的公式,如果不是相同的图像。除以 alpha 是您在使用完 alpha 后执行的单独步骤,如果您最后的混合是在下面有 100% 不透明的对象,则实际上是不必要的。
  • 是的,编辑只是为了在黑暗主题上可见。 Google Charts API 使图像比原始图像更清晰。我没有试图改变公式,因为我觉得这可能与帖子的意图相冲突。但是,您的回答说该图像来自 Wiki 文章。文章不再使用该图像。我在文章中最接近的公式都使用了 alpha 除法。除非除此之外还有另一篇文章? en.wikipedia.org/wiki/Alpha_compositing
  • @Calculuswhiz 这几乎肯定是我正在查看的页面。我从来没有想过维基百科页面会随着时间的推移而不稳定。除以 alpha 对我来说似乎是错误的,我不确定为什么 Wikipedia 现在包含它。
【解决方案2】:

以上是错误的算法。 这可以通过代入 aA = 0 来验证。然后事实证明,如果您试图将颜色 B 与完全透明的颜色 A 混合,即不可见,那么从逻辑上讲颜色 B 保持不变,但根据这个公式,它会改变。 The result of incorrect blending with gradient transparency. 因此,正确的解决方案应该是这样的:

aOut = aA + (aB * (255 - aA) / 255)
rOut = (rA * aA + rB * aB * (255 - aA) / 255)/aOut 
gOut = (gA * aA + gB * aB * (255 - aA) / 255)/aOut 
bOut = (bA * aA + bB * aB * (255 - aA) / 255)/aOut 

The result of correct blending with gradient transparency.

【讨论】:

    【解决方案3】:

    这似乎是你想要的:http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending,但我对你的符号有点困惑,因为维基百科说 argb 值应该在 0.0 到 1.0 之间。所以我不认为这个公式会给你 FA=19。你能澄清一下吗?

    编辑:既然你把 FA=19 的业务拿掉了,我倾向于使用那个公式。

    【讨论】:

    • 您也可以将 0 到 255 的值用于 RGB 分量;如果您需要使用这些值来计算某些东西,那么使用 0 到 255 之间的值可能会更好。不过,可以将公式更改为使用 0 到 255 之间的值。
    • 我认为公式期望每个值都是一个百分比,因此您可以使用 0.0-1.0 作为公式,然后乘以 255。
    • 谢谢danben,我会小心把这个公式从(0到1.0)转换成(0到255)。
    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多