在Java中处理alpha混合

时间:2012-10-25 17:47:04

标签: java algorithm processing argb

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

我在文档中看到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]);      
} 

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

A是前景值,

B是背景值,

C是结果值,

a是alpha组件。

这是根据alpha混合维基页面:http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending

答案 2 :(得分:0)

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

我在这里得到它,SVG处理javadoc用于混合Lighten! 好 !