如何使用php将颜色值转换为精确精度

如何使用php将颜色值转换为精确精度,php,image-processing,Php,Image Processing,我有rgba格式的颜色值rgba(20,40,60,1),我想以精确的精度转换成实数。例如,如何在php中实现这一点 Red 20 = 0.074510 Green 40 = 0.156863 Blue 60 = 0.231373 alpha 1 = 1.000000 对于alpha,您需要一个特殊的函数或为该函数添加第二个参数:)20和0.074510之间的关系是什么?您需要多少精度bcdiv(“40”,“255”,200)例如在小数点后变为200。答案似乎是0,(156867450980

我有rgba格式的颜色值rgba(20,40,60,1),我想以精确的精度转换成实数。例如,如何在php中实现这一点

Red 20 =  0.074510
Green 40 = 0.156863
Blue 60 = 0.231373
alpha 1 = 1.000000

对于alpha,您需要一个特殊的函数或为该函数添加第二个参数:)

20和0.074510之间的关系是什么?您需要多少精度<代码>bcdiv(“40”,“255”,200)例如在小数点后变为200。答案似乎是
0,(1568674509803921568627450980392)
,无限重复。那么,什么是“精确的”?我甚至不知道你是如何得到这些十进制值的。据我所知,20应该是
0.078125
,40应该是
0.15625
,60应该是
0.234375
。这甚至不难计算。rgb的每个通道有256个级别。所以
20/256
。就这么简单。我能得到的最接近您的值,在每个通道258-260色的范围内。另外,如果20是
0.074510
,那么40的值不是两倍大吗?然而,
0.074510*2=0.14902
@JonathanKuh:有256个值,其中0是一,所以除以
255
。否则您将如何到达
1
?255/256 != 1.如果值在1-256之间,我们仍然会遇到在0到1的范围内无法达到0的问题。256个值表示255个数字范围。@Wrikken谢谢。我没有像这样做很多的基转换,所以我总是搞不清楚它是255还是256。有道理。还有其他问题吗?这是一个地狱般的“精确”,是一种有点迂回的书写方式
return$color/250
(或者
返回$color/255;
如果我们想更精确一点的话。哈哈,是的,255 xD sry我不好。我是在我的iPhone上写的。Hard enoigh:)
function color2number($color) {
    $return = (1/250*$color);
    return $return
}