Philips Hue API在某些情況下爲blub的顏色值返回xy值。我怎樣才能將其轉換爲HEX字符串?我嘗試了各種公式,我在網上找到,但沒有一個可以在燈泡的所有顏色上工作。將Philips Hue XY值轉換爲HEX
我看了一下以下建議指南,並試圖在PHP中實現如下:
list($x, $y) = $light['state']['xy'];
$z = 1.0 - $x - $y;
$Y = $light['state']['bri']/255.0; // The given brightness value
$X = ($Y/$y) * $x;
$Z = ($Y/$y) * $z;
$r = $X * 1.612 - $Y * 0.203 - $Z * 0.302;
$g = -$X * 0.509 + $Y * 1.412 + $Z * 0.066;
$b = $X * 0.026 - $Y * 0.072 + $Z * 0.962;
$r = $r <= 0.0031308 ? 12.92 * $r : (1.0 + 0.055) * pow($r, (1.0/2.4)) - 0.055;
$g = $g <= 0.0031308 ? 12.92 * $g : (1.0 + 0.055) * pow($g, (1.0/2.4)) - 0.055;
$b = $b <= 0.0031308 ? 12.92 * $b : (1.0 + 0.055) * pow($b, (1.0/2.4)) - 0.055;
我把我的燈一個在底部的紅色色調的應用程序留下的顏色選擇器並將亮度設置爲最大。以下是所產生的值:
// Read from bulb
x = 0.6472
y = 0.3302
bri = 254
// XYZ calculations
X = 1.952
Y = 0.996
Z = 0.068
// RGB calculations
r = 1.594 // Out-of-range > 1
g = 0.677
b = 0.233
正如你所看到的,所產生的r值超出了範圍,因爲它比1.我在我的公式缺少高?
我們也移植的例子的代碼來重新調整所有顏色值:HTTPS: //github.com/PhilipsHue/PhilipsHueSDKiOS/blob/master/ApplicationDesignNotes/RGB%20to%20xy%20Color%20conversion.md從Objective-C到Javascript,所以我們很快就會發布。更新:Javascript/Typescript實現現在在線:https://github.com/Q42/hue-color-converter – Christiaan
我看了看指南,並添加了一些示例代碼,原來的問題,我仍然無法得到它工作。我的RGB顏色最終超出範圍。 – Cowlby