【问题标题】:Transform RGBA with underlying color into RGB?将带有基础颜色的 RGBA 转换为 RGB?
【发布时间】:2011-09-23 01:56:58
【问题描述】:

我在用 Java 转换颜色时遇到了问题。简化后的问题如下所示:

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

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

我希望有人可以帮助我。

问候, 迈克尔

【问题讨论】:

标签: java colors transform alpha


【解决方案1】:

正如Wikipedia article 所述(假设背景不透明):

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);

免责声明:尚未对此进行测试,但它应该可以工作。

如果前景色是恒定的(比如填充的透明矩形),可以通过预计算fgColor.getComponent() * fgColor.getAlpha()(255 - fgColor.getAlpha())进行很多优化。

【讨论】:

  • 非常感谢您的评论和代码。它工作得很好:)
  • @Michael:很高兴听到这个消息:)
猜你喜欢
  • 2011-01-04
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 2011-10-04
  • 2012-04-11
  • 1970-01-01
  • 2019-02-08
相关资源
最近更新 更多