我试图组合两种RGBA颜色,以元组形式给出,比如(0,0,0,128)和(255,255,255,128)。我已经找到了this,它非常有用,但是我当前的代码(Python)
def get_color(colorRGBA1, colorRGBA2):
alpha = 255 - (255 - colorRGBA1[3]) * (255 - colorRGBA2[3])
red = (colorRGBA1[0] * (255 - colorRGBA2[3]) + colorRGBA2[0] * colorRGBA2[3]) / 255
green = (colorRGBA1[1] * (255 - colorRGBA2[3]) + colorRGBA2[1] * colorRGBA2[3]) / 255
blue = (colorRGBA1[2] * (255 - colorRGBA2[3]) + colorRGBA2[2] * colorRGBA2[3]) / 255
return (int(red), int(green), int(blue), int(alpha))
以某种方式返回一些奇怪的数字(比如-15874)作为alpha。其他一切都很好,但我不知道如何获得新颜色的alpha值。在
两种颜色的alpha值都在0到255之间。在
正确的代码是:
…因为我必须用
(255 - colorRGBA1[3]) * (255 - colorRGBA2[3])
除以255
才能得到一个有效的alpha值。在在https://gist.github.com/JordanDelcros/518396da1c13f75ee057查看JavaScript中的解决方案
请注意,这个实现在[0,1]范围内有alpha,因此在混合之前将alpha值除以255,最后将最终alpha乘以255。在
相关问题 更多 >
编程相关推荐