将具有底层颜色的RGBA转换为RGB?

Mic*_*ael 8 java alpha transform colors

我在使用Java转换Colors时遇到了问题.简化的问题如下所示:

我的应用程序包含图像.我在这张图片上放了一个Recangle.Rectangle的颜色定义为new Color(255,255,0,80).

如果没有 getPixelColor() - 方法,是否可以计算/转换屏幕上显示的颜色为没有Alpha值的颜色?不同的配方:我可以从具有alpha值+基础颜色的颜色计算没有alpha值的颜色吗?

我希望有一个人可以帮助我.

问候,迈克尔

Kar*_*nek 7

正如维基百科文章所述(假设背景不透明):

int r, g, b;
r = fgColor.getRed() * fgColor.getAlpha() + bgColor.getRed() * (255 - fgColor.getAlpha());
g = fgColor.getGreen() * fgColor.getAlpha() + bgColor.getGreen() * (255 - fgColor.getAlpha());
b = fgColor.getBlue() * fgColor.getAlpha() + bgColor.getBlue() * (255 - fgColor.getAlpha());
Color result = new Color(r / 255, g / 255, b / 255);
Run Code Online (Sandbox Code Playgroud)

免责声明:尚未对此进行测试但应该可行.

如果前景色是常量(例如填充的透明矩形),则可以通过预计算fgColor.getComponent() * fgColor.getAlpha()和优化来优化(255 - fgColor.getAlpha()).