我正在创建自己的基于 PHP 的应用程序,我想将 RGB 颜色更改为 CIE 1931 的 xy 格式。
如何将我的 RGB 颜色规格转换为 CIE 颜色空间?
我正在创建自己的基于 PHP 的应用程序,我想将 RGB 颜色更改为 CIE 1931 的 xy 格式。
如何将我的 RGB 颜色规格转换为 CIE 颜色空间?
先用变换矩阵计算X、Y、Z,然后对结果进行归一化
X = 0.4124*R + 0.3576*G + 0.1805*B
Y = 0.2126*R + 0.7152*G + 0.0722*B
Z = 0.0193*R + 0.1192*G + 0.9505*B
标准化:
x = X / (X + Y + Z)
y = Y / (X + Y + Z)
这是我的 Javascript 版本。它应该对你有足够的帮助;)
/**
* Convert RGB to XY
*/
function RGBtoXY(red,green,blue){
red = (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);
green = (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);
blue = (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);
var X = red * 0.664511 + green * 0.154324 + blue * 0.162028;
var Y = red * 0.283881 + green * 0.668433 + blue * 0.047685;
var Z = red * 0.000088 + green * 0.072310 + blue * 0.986039;
var fx = X / (X + Y + Z);
var fy = Y / (X + Y + Z);
return [fx.toPrecision(4),fy.toPrecision(4)];
}