<?php
function xmp_print($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function xyz2rgb($xyz){
list($x, $y, $z) = $xyz;
// Observer = 2°, Illuminant = D65
$r = 0.032406*$x -0.015372*$y -0.004986*$z;
$g = -0.009689*$x +0.018758*$y +0.000415*$z;
$b = 0.000557*$x -0.002040*$y +0.010570*$z;
$r = $r > 0.0031308 ? pow( $r, 0.4166666666666667)*269.025 - 14.025 : $r*3294.6;
$g = $g > 0.0031308 ? pow( $g, 0.4166666666666667)*269.025 - 14.025 : $g*3294.6;
$b = $b > 0.0031308 ? pow( $b, 0.4166666666666667)*269.025 - 14.025 : $b*3294.6;
return array(round($r), round($g), round($b));
}
$white = array(95.047, 100.000, 108.883);
$yellow = array(77.000, 92.780, 13.850);
$red = array(41.240, 21.260, 1.930);
$black = array(0, 0, 0);
xmp_print( xyz2rgb( $white ) );
xmp_print( xyz2rgb( $yellow ) );
xmp_print( xyz2rgb( $red ) );
xmp_print( xyz2rgb( $black ) );
Array
(
[0] => 255
[1] => 255
[2] => 255
)
Array
(
[0] => 255
[1] => 255
[2] => 0
)
Array
(
[0] => 255
[1] => 0
[2] => 0
)
Array
(
[0] => 0
[1] => 0
[2] => 0
)