工具用的顺手吗?
你的反馈能帮助我们做得更好
实现RGB与XYZ色彩代码双向转换的工具,适用于网页设计和图像处理场景
概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
网页或界面中常见的 rgb(77, 141, 234),表示红、绿、蓝三个 8 位 sRGB 编码通道;同一组通道也可以写成 HEX 颜色 #4D8DEA。CIE XYZ 则用 X、Y、Z 三个三刺激值描述颜色。两者并不是把三个数字换个标签:sRGB 编码值带有非线性传递函数,必须先还原成线性光数值,才能与 XYZ 做矩阵换算。
页面支持两个方向联动。调整 RGB 或填写 HEX,会得到 XYZ 和颜色预览;调整任一 XYZ 分量,则会重新计算整数 RGB、HEX 与预览色。RGB 滑块范围为 0–255、步长为 1;XYZ 滑块范围为 0–100、步长为 0.01。由 RGB 算出的 XYZ 显示到最多 4 位小数,反向得到的 RGB 会取整。
这里的 RGB 按 sRGB、D65 白点解释。先令 c=C/255,其中 C 是 R、G 或 B 通道;再按 sRGB 分段函数得到线性通道值。
c_lin = c / 12.92,当 c ≤ 0.04045
c_lin = ((c + 0.055) / 1.055)^2.4,当 c > 0.04045
X = 100 × (0.4124564R_lin + 0.3575761G_lin + 0.1804375B_lin)Y = 100 × (0.2126729R_lin + 0.7151522G_lin + 0.0721750B_lin)Z = 100 × (0.0193339R_lin + 0.1191920G_lin + 0.9503041B_lin)
XYZ 转回 RGB 时,流程相反:先把 XYZ 除以 100,乘以逆矩阵得到线性 RGB,再应用 sRGB 编码函数,最后缩放到 0–255。这个口径决定了结果只适用于同样按 sRGB 与 D65 解释的数值;仅写“RGB”而不说明原色、白点和传递函数,并不足以确定唯一的 XYZ 结果。
X 是 XYZ 三刺激值之一,不等同于“红色通道”。它与 Y、Z 一起才能确定颜色。
Y 与亮度成比例。页面采用相对白色 Y=100 的常见尺度,因此这里的 Y 不是以 cd/m² 表示的实测绝对亮度。
Z 也是三刺激分量,不等同于“蓝色通道”。在该尺度下,合法结果不必全部小于或等于 100。
指南
按步骤完成操作,并通过示例核对输入与结果。
已有 RGB 或 HEX 时,从左侧开始;已有 XYZ 时,直接移动右侧相应分量。页面没有单独的方向开关,最后调整的一侧就是本次换算的输入。
拖动 R、G、B 滑块设置 0–255 的整数通道,或者在 HEX 框填写 #RRGGBB,例如 #4D8DEA。也可用取色器或常用颜色色块快速选色。
颜色预览、HEX、RGB 和 X/Y/Z 会同步变化。可分别复制 HEX、整组 RGB、整组 XYZ 或单个 XYZ 分量;“复制全部”会把三种表示合并为多行文本。
移动 X、Y 或 Z 滑块后,查看左侧生成的整数 RGB 和 HEX。需要回到初始示例时,重置会恢复 #3B82F6,对应 RGB(59, 130, 246)。
把 HEX 设为 #4D8DEA,也就是 RGB(77, 141, 234)。按上述线性化和矩阵口径计算,页面结果为:
X = 27.4314Y = 26.5653Z = 81.5079
再从这组 XYZ 反向计算,会回到 RGB(77, 141, 234)。边界测试也便于核对实现:黑色 #000000 对应 (0, 0, 0);纯红 #FF0000 对应 (41.2456, 21.2673, 1.9334);白色 #FFFFFF 对应 (95.047, 100, 108.883)。这些值都采用本页面的 sRGB D65 与 Y=100 口径。
场景
查看这项工具在不同工作与生活流程中的用法。
设计稿给出 HEX 或 RGB,而颜色计算流程需要 XYZ 中间值时,可先转换并复制三分量。交接时应同时写明 sRGB、D65 和 XYZ 的尺度,避免另一端按 Adobe RGB、Display P3 或 0–1 尺度解释。
开发或测试人员可用黑、白、纯红和 #4D8DEA 作为可复算样例,对照自有脚本或颜色库的输出。若只在末位有差异,应继续核对矩阵精度、舍入位数和传递函数阈值。
学习色彩科学时,比较灰色 RGB(128, 128, 128) 与其 XYZ (20.5169, 21.5861, 23.5035),可以直观看到 128/255 并不等于线性光强的一半,并据此理解为何换算不能只做一次矩阵乘法。
问答
集中解答高频疑问与容易混淆的问题。
因为常见的 8 位 sRGB 是非线性编码值,矩阵作用的对象应是线性光 RGB。先除以 255 并执行分段线性化,再乘矩阵,才能得到这里所用口径的 XYZ。
因为该尺度只把参考白的 Y 归一到 100,并没有规定 X 和 Z 也必须小于 100。按当前口径,sRGB 白色得到 X=95.047、Y=100、Z=108.883,所以 Z 大于 100 是预期结果。
页面会保留上一组有效颜色,直到输入能够被识别。建议使用 #RGB 或 #RRGGBB 形式并检查字符是否只包含 0–9、A–F;有效输入会自动规范为大写六位 HEX。
只要它们代表相同的三个 sRGB 通道,结果就相同。例如 #4D8DEA 与 RGB(77, 141, 234) 是同一种编码颜色,都会得到 (27.4314, 26.5653, 81.5079)。
须知
使用前了解适用范围、结果限制与必要提醒。
结果适合做 sRGB D65 数值换算和屏幕色预览,不等同于带设备配置文件、测量条件与渲染意图的完整色彩管理。
推荐
查找相关工具、专题与可用的 API 能力。