【问题标题】:Remove all Black from RGB to be Transparent从 RGB 中删除所有黑色以变为透明
【发布时间】:2017-06-07 23:18:52
【问题描述】:

这有点难以解释,但这里是......

我需要一种方法来消除颜色中的所有黑色,使其表现得更像真实的光。

例如,我希望 RGB(0, 0, 0) 为透明而不是黑色,RGB(127, 127, 127) 为白色,透明度为 50%,而不是灰色。

目前我正在使用这个:

public static int getHexColor(int[] color) {
    return android.graphics.Color.rgb(color[0], color[1], color[2]);
}

有什么想法吗?

【问题讨论】:

  • 您可能应该只保持颜色相同,而不是使用 Alpha 通道。
  • 如何集成 RGBA 以摆脱黑色?例如在 RGB(127, 127, 127) 为白色?
  • @WillBell 如果你在一张图片中有两个像素 (25,25,25)(127, 127, 127),算法应该假设你在alpha = 50 中有整个图片并且第一个像素更暗或者第一个像素是白色的alpha = 10?
  • @RomanKolomenskii 永远只有一种颜色。我用的是单一颜色的盒子。

标签: android android-studio colors rgb hsv


【解决方案1】:

这可以通过使用来完成

Color.parseColor("#AARRGGBB");

AA 是颜色的不透明度。因此,您可以做的是获取颜色的 HEX 值,并将其中一个不透明度值添加到 Hex 的开头。

100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00

感谢@Duggu 提供不透明度值。

【讨论】:

    【解决方案2】:

    我建议这样做:

    1) 获取rgb 的最大值。 int max = Math.max(r(Math.max(g,b))

    如果 max == 0 跳过第 2 步和第 3 步

    2) 除以255: float alpha = max / 255f;

    3) 通过缺少 alpha 来缩放每个值:r = (int) (r * (1 / alpha))

    4) 创建新颜色android.graphics.Color.argb(max, r, g, b)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多