|
|
1
2
你的alpha混合函数是正确的;考虑alpha混合的另一种方法是它基于alpha在两个颜色值之间插值,因此它应该是[0,1]中的一个值。
换句话说,将颜色组件存储为
EDIT2:另外,如果你将像素存储为
|
|
|
2
0
所以正确的代码是:
你也可能会在你认为不可能的地方遭受到麻烦。我会将函数中的代码更改为:
一般来说,使用浮点而不是int来处理图像是非常常见的。现在许多程序将整个图像转换为浮点数,处理后再转换回来。这样可以避免几个错误。 |
|
|
3
0
对于所有整数,您需要记住重新调整整数的比例,以便将结果拟合回原始范围:
对于所有浮点,您需要记住将整数输入从[0..255]中的原始值规范化为[0.0。。1.0],执行所有处理,然后仅在最后转换回整数。
注意,我忽略了每个方法中的舍入问题;一旦你掌握了基本的数学知识,你就应该注意这一点。此外,还有各种技巧可以通过乘法或位摆弄来代替除法(可能相对较慢)。 |