【问题标题】:Processing alpha blending in Java在 Java 中处理 alpha 混合
【发布时间】:2012-10-25 17:47:04
【问题描述】:

我正在处理,我想在低级代码上重新创建函数 混合最轻。

我在文档中看到C = max(A * factor, B)

  • C 是返回的颜色
  • A是来源
  • B 是要与之混合的图像

我在网上看到,指定的因子基于源像素的 alpha 分量,它由表示像素颜色的 32 位整数的前 8 位(从左起)表示。这些最左边的位也称为最高位。

来源:this book,第 464 页

我应该怎么想?

这是我那部分的代码:

for (int y = 0; y < capWidth * capHeight; y++) {
    int factor = (pixels[y] >> 24) & 0xFF;
    pixels[y] = max(pixels[y] * factor, previousFrame.pixels[y]);      
} 

这不起作用,有什么帮助吗?

【问题讨论】:

  • 定义it doesnt work

标签: java algorithm processing argb


【解决方案1】:

对于每种颜色:C = A(a/255) + B(1-(a/255)),其中:

A是前景值,

B为背景值,

C 是结果值,并且

a 是 alpha 分量。

这是每个 alpha 混合 wiki 页面:http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending

【讨论】:

    【解决方案2】:
    1. 这不起作用,因为原始公式中的 factor 是 0 到 1 之间的浮点数,而代码中的 factor 是 0 到 255 之间的整数。
    2. 这不是混合公式,不是真的。对于混合,您必须添加颜色,而不是取最大值

    【讨论】:

    • 好的!那么我应该如何解释呢? C = max(A * factor, B) 这是混合最亮像素的公式。处理网站上的文档没有提供更多提示:/
    • 正如我所说,您必须将factor 转换为不同的范围。在这种情况下,这意味着将其除以 255.0 并存储为 float,而不是 int。据我所知,只要您尝试在您引用的书中实现所谓的“LIGHTEST”模式,您的实现是正确的。
    【解决方案3】:

    http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/index.html

    我在这里找到了,用于混合 Lighten 的 SVG 处理 javadoc! 好吧 !

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2019-03-12
      • 2020-04-11
      • 1970-01-01
      • 2011-12-14
      • 2010-11-20
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多