gpt4 book ai didi

colors - 如何从两个 RGB 值中找到一种颜色的 RGBA 值?

转载 作者:行者123 更新时间:2023-12-02 09:54:37 25 4
gpt4 key购买 nike

我有一种预感,这以前已经做过,但我对此完全是门外汉,不知道如何开始提出正确的问题。所以我将描述我正在尝试做的事情......

我有一个未知的 ARGB 颜色。我只知道它的绝对 RGB 值显示在两种已知的不透明背景颜色上,例如黑色 0x000000 和白色 0xFFFFFF。因此,继续这个例子,如果我知道 ARGB 颜色在显示超过 0x000000 时相当于 RGB 0x000080,并且我知道相同的 ARGB 颜色在显示超过 0xFFFFFF 时相当于 RGB 0x7F7FFF,有没有办法计算原始 ARGB 颜色是?

或者这可能吗???

最佳答案

所以,你知道将 (a,r,g,b) 放在 (r1,g1,b1) 上会得到 (R1,G1,B1),将它放在 (r2,g2,b2) 上会得到 ( R2、G2、B2)。换句话说——顺便说一句,我将在 a 范围从 0 到 1 的单位中工作——你知道 (1-a)r1+ar=R1、(1-a)r2+ar=R2 等。将这两者相减:得到 (1-a)(r1-r2)=R1-R2,因此 a=1-(R1-R2)/(r1-r2)。一旦你知道了a,你就可以解决其他所有问题。

您实际上应该计算对所有三个 {R,G,B} 进行计算时得到的 a 值,并对它们进行平均或其他处理,以减少舍入误差的影响。事实上,我建议您采用 a = 1 - [(R1-R2)sign(r1-r2) + (G1-G2)sign(g1-g2) + (B1-B2)sign(b1-b2)]/(|r1-r2|+|g1-g2|+|b1-b2),这相当于对更可靠的颜色赋予更高的权重。

现在,例如,r = (R1-(1-a)r1)/a = (R2-(1-a)r2)/a。如果 a、r、g、b 具有无限精度值,这两者将是相等的,但当然在实践中它们可能略有不同。平均:r = [(R1+R2)-(1-a)(r1+r2)]/2a。

如果您的 a 值恰好非常小,那么您将只能获得有关 r、g、b 的相当不可靠的信息。 (在 a=0 的限制下,你根本得不到任何信息,而且显然你对此无能为力。)你可能会得到 0..255 范围之外的数字,在这种情况下我不会我认为你可以做得比仅仅剪辑更好。

以下是针对您的特定示例的效果。 (r1,g1,b1)=(0,0,0); (r2,g2,b2)=(255,255,255); (R1,G1,B1)=(0,0,128); (R2,G2,B2)=(127,127,255)。所以 a = 1 - [127+127+127]/[255+255+255] = 128/255,这恰好是 a 的 256 个实际可能值之一。 (如果不是,我们可能应该在这个阶段将其舍入。)

现在 r = (127-255*127/255)*255/256 = 0;同样,g = 0; b = (383-255*127/255)*255/256 = 255。

所以我们的 ARGB 颜色是 80,00,00,FF。

关于colors - 如何从两个 RGB 值中找到一种颜色的 RGBA 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com