欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

怎样把RGB百分比转成实际的RGB数值?求助!

最编程 2024-01-12 22:37:39
...

您不能得到完全相同的值,因为您舍入了数字。100和255不是倍数。您的百分比RGB似乎都是整数,因此您至少丢失了1位信息(可能还有2位)。因此,您不能期望在所有情况下的确切值。(您不能将100个数字映射到256个值,并获得所有256个值)。

但好处是:你不需要它(通常)。你的眼睛不那么明智(而且我们不能看到RGB和256x256x256值的所有组合:我们的眼睛可以分辨出更少的颜色,所以在某些情况下,您不会看到任何不同,而在某些情况下,它只是几乎不明显)。此外,一些监视器面板技巧显示每个频道只显示64种不同的色调(而且很少有人注意到它)。考虑一下,如果从JPEG图像中获取数据,就会得到额外的转换(数据不是作为RGB数据存储,而是作为YCC存储)。

要获得最佳选择,您需要知道原始算法(它们是round算法还是trunc算法?)或者,您应该进行更大的示例测试,并检查不同算法之间的差异(例如,有多少种情况是精确的,有多少种情况只有1,2,3 off)。

注意:您有三种可能性:round()math.floor()math.ceil()。我将避免使用int:根据Python,结果似乎取决于系统标准库(可以被截断或舍入)。注意:math.trunc()math.floor()对正数(或零)给出了相同的结果。

总的来说,我更喜欢圆形:它给出了0%和100%的预期结果(ceil与这些极值相似)。

PS:没有“正确的RGB值”。从历史上看,RGB是从0到100 (也可能是浮点数)或0.0到1.0之间的数字。只是HTML被推到0到255,但是如果你有一个可以显示更多颜色的屏幕,它会造成问题。也许对于RGB,你指的是R*G*B*,所以不是线性RGB,而是OETF修正的RGB)。

没有:没有可靠的消息来源。没有人遵循标准,所以不要期望那些将颜色通道转换成99%的人使用完全相同的方法(我们程序员是懒惰的)。标准倾向于使用浮点数。注意:程序内部可能使用浮点数,因此在颜色选择器中,根据输入颜色的方式,您可能会得到不同的颜色和相同的显示%-值。还是指指定%-值的特定标准?如果黑色是0、0、0或16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16(例如MPEG-2、电视和其他有限范围的RGB设备),或者如何解释伽马校正(好的:最近和较近期的标准比较精确,但大多数程序没有得到),我们不能达成一致。此外,当阅读你的"RGB“值时,我过去会假设它是sRGB (所以是web和微软的颜色空间),但几年来苹果使用了不同的颜色空间( P3),其他人也在追随扩展sRGB。一片混乱。因此,只需测试不同的方法(并使用您的眼睛检查质量)。