1

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

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

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

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

资料来源:本书,第 464 页

我应该怎么想?

这是我那部分的代码:

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

没用,有救吗?

4

3 回答 3

0
  1. 这不起作用,因为factor原始公式中的 是 0 到 1 之间的浮点数,而factor代码中的 是 0 到 255 之间的整数。
  2. 这不是混合公式,不是真的。对于混合,您必须添加颜色,而不是取最大值
于 2012-10-25T18:52:36.727 回答
0

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

A是前景值,

B是背景值,

C 是结果值,并且

a 是 alpha 分量。

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

于 2012-10-25T19:30:17.293 回答
0

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

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

于 2012-10-26T14:05:36.463 回答