从颜色中删除alpha但保留其纹理

Bos*_*ude 6 java android colors

我有一种颜色 #6A8F6509

我希望删除该颜色的Alpha部分,只留下RGB组件(即#RRGGBB).

生成的颜色必须与没有透明度的初始颜色相同.

我如何在Android的Java上解决这个问题?

更新:初始背景始终为白色(#FFF)

Gra*_*and 24

int newColor = oldColor | 0xFF000000;
Run Code Online (Sandbox Code Playgroud)


Nik*_*nov 12

如果您想使用代码执行此操作,可以尝试以下代码:

    static int stripAlpha(int color){
    return Color.rgb(Color.red(color), Color.green(color), Color.blue(color));
}
Run Code Online (Sandbox Code Playgroud)


LJ2*_*LJ2 5

对于每种颜色:C'= C(a / 255)+ 255(1-(a / 255))

因此,对于#6A8F6509:

R'= 143(106/255)+ 255(1-(106/255)=(大约)208

G'= 101(106/255)+ 255(1-(106/255)=(大约)191

B'= 9(106/255)+ 255(1-(106/255)=(约)153

因此,如果我的数学正确,那么您的答案应该是:#D0BF99。这也仅适用于全白色背景-对于非白色背景,第二个加数应具有适当的背景颜色值,而不是255。

-编辑-

再次查看该公式,我不确定是将公式应用于每种颜色还是整个颜色(快速的视觉测试应该能够告诉您-我在猜测每种颜色)。我应该指出,这是直接来自Alpha合成Wiki页面的公式:

http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending