使用方法
- 在「HEX 色值」里填一个十六进制颜色,例如 #FF8800;支持三位简写 #F80,也支持省略 # 前缀的 FF8800。
- 也可以直接在 R、G、B 三个框里填 0 ~ 255 的整数,页面会同步回填 HEX。
- 页面立刻给出 RGB、CMYK 四色值、HSL,以及「把 CMYK 反算回 RGB」的校验值与偏差。
- 需要一次算多个颜色,就把每个 HEX 单独占一行粘进「批量 HEX」输入框,按 Ctrl / Cmd + Enter 转换(Enter 留给换行),结果按选定的「批量输出分隔符」排列。
- 下方「常用颜色转换对照表」列出 14 个典型色值,先显示前 8 行,点「加载更多」展开全部。
- 「复制对照表」按 TSV 复制,「导出 CSV」会下载一份带 UTF-8 BOM 的表格文件,用 Excel 直接打开不会乱码。
这个十六进制转CMYK转换器能解决什么问题
设计师在屏幕上用 HEX 或 RGB 定色,印刷厂拿到手的却是四色油墨的配比,两个体系之间的桥就是 CMYK。屏幕靠三原色光叠加发光,颜色越堆越亮;印刷靠青、品红、黄、黑四种油墨吸收反光,油墨越多颜色越暗,方向完全相反。本页把 HEX 一次性换算成 CMYK,并同步给出 RGB 与 HSL,是为了让同一支颜色在屏幕稿与印刷稿之间有个可核对的中间值。
它适合三类场合:一是把品牌色、LOGO 色从 HEX 转成四色配比,交给印厂做名片、画册、包装;二是检查屏幕稿转印刷稿时哪些颜色会明显变化,尤其是纯黑、纯白与高饱和色;三是批量把一整套配色表转成四色,方便一次性交付。本页还额外给出「反向校验」,因为 CMYK 换算回 RGB 一定会与原始值有细微偏差,把这个偏差摆出来,比只说一句「以印厂打样为准」更让人心里有数。
转换原理与变量说明
先把 0 ~ 255 的 R、G、B 归一化成 0 ~ 1 的小数,记作 R'、G'、B',再按下面的式子求四个分量:
- 黑版:
K = 1 − max(R', G', B')。K 取的是三色里的最大值,也就是这只颜色「最亮的那一路」离纯白有多远。 - 青、品红、黄:
C = (1 − R' − K) ÷ (1 − K),把其中的 R' 换成 G'、B' 就分别得到 M 与 Y。 - 全黑边界:当 max(R', G', B') = 0,K = 1,此时分母 1 − K 为 0,页面直接输出 (0, 0, 0, 100),即纯黑只由黑版构成。
- 全白边界:当 R' = G' = B' = 1,K = 0,C = M = Y = 0,输出 (0, 0, 0, 0),即白纸本身不需要任何油墨。
第一个只属于本工具的机制是K 的抽取逻辑。为什么要把三色里的最小值单独抽出来当黑版,而不是直接让 C、M、Y 三色叠出黑?因为三色油墨叠印出的黑偏褐、且要上三倍墨量,既不省墨也不够深。公式 K = 1 − max(R', G', B') 的含义是:只要三路里有一路接近满值,说明这只颜色离纯白很近,黑版就该小;三路都不高,黑版才大。以 #808080 为例,三个分量都是 128,归一化后 max(R', G', B') = 0.5020,于是 K = 1 − 0.5020 = 0.4980,取整后是 50%;而灰阶的 C = M = Y = 0,最终就是 (0, 0, 0, 50)。灰阶只有 K 非零,这正是 CMYK 与 RGB 最根本的差异。
第二个机制是减色与加色的方向相反。RGB 里 (255, 255, 255) 是白、(0, 0, 0) 是黑,越加越亮;CMYK 里 (0, 0, 0, 0) 是白、(0, 0, 0, 100) 是黑,越加油墨越暗。以 #FF8800 为例,R' = 1,所以 K = 0;M = (1 − 0.5333 − 0) ÷ 1 = 0.4667,取整为 47%;Y = (1 − 0 − 0) ÷ 1 = 100%。也就是说这只橙色不需要黑版,靠满量的黄加约一半的品红就能出来,这与「加色屏幕上前景是红绿叠加」的直觉完全不同。
第三个机制是两种体系不是一一映射。RGB 能表示 16777216 种颜色,CMYK 只有四色组合,而且实际印刷还受油墨品牌、纸张吸墨性、网点扩大影响,同一组 CMYK 数值在不同纸上的观感可以差不少。本页给出反向校验就是为了让这种损失可见:#FF8800 转成 CMYK(0, 47, 100, 0) 再还原回 RGB 是 (255, 135, 0),与原始的 (255, 136, 0) 差了 −1;#1E90FF 转成 CMYK(88, 44, 0, 0) 再还原是 (31, 143, 255),与原始的 (30, 144, 255) 差了 +1 / −1。偏差来自每步四舍五入,属于换算固有现象。
第四个机制是解析容错与非法输入。三位简写 #F80 会先展开成 #FF8800 再计算;缺少 # 前缀的 FF8800 按六位解析;出现非十六进制字符或长度不对时,批量模式下会指名道姓地报出「第 3 个色值 #GG00ZZ 含非十六进制字符,请检查」,而不是整批静默失败。这一点在贴了一长串色值时特别重要,能立刻定位到出错的那一行。
完整示例(数值仅作演示)
示例条件:HEX 色值 #FF8800。
- 原始 RGB 为 (255, 136, 0),归一化后 R' = 1、G' = 0.5333、B' = 0。
- max(R', G', B') = 1,所以 K = 0,这只颜色不含黑版。
- M = 1 − 0.5333 = 0.4667 → 47%,C = 0,Y = 100%。
- 最终 CMYK = (0, 47, 100, 0),HSL = (32, 100%, 50%)。
- 反向校验:把 CMYK(0, 47, 100, 0) 还原回 RGB 得到 (255, 135, 0),与原始 (255, 136, 0) 相差 −1。
再看一个灰阶的例子:#808080 的三路分量都是 128,max = 0.5020、K = 0.4980 → 50%,C = M = Y = 0,结果是 (0, 0, 0, 50);把它还原回 RGB 正好又是 (128, 128, 128),偏差 (0, 0, 0)。这说明灰阶换算没有信息损失,因为它只用到黑版一路。示例中的色值均为演示数值,不代表任何具体印刷标准。
常用颜色转换对照表
下表列出 14 个典型色值,覆盖三原色、三间色、灰阶、深红与米白,可用于快速核对换算结果是否符合预期。表中 CMYK 为四舍五入后的整数百分值。
| HEX | R | G | B | C | M | Y | K | H | S | L |
|---|---|---|---|---|---|---|---|---|---|---|
| #FF8800 | 255 | 136 | 0 | 0 | 47 | 100 | 0 | 32 | 100% | 50% |
| #1E90FF | 30 | 144 | 255 | 88 | 44 | 0 | 0 | 210 | 100% | 56% |
| #808080 | 128 | 128 | 128 | 0 | 0 | 0 | 50 | 0 | 0% | 50% |
| #FFFFFF | 255 | 255 | 255 | 0 | 0 | 0 | 0 | 0 | 0% | 100% |
| #000000 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 | 0% | 0% |
| #FF0000 | 255 | 0 | 0 | 0 | 100 | 100 | 0 | 0 | 100% | 50% |
| #00FF00 | 0 | 255 | 0 | 100 | 0 | 100 | 0 | 120 | 100% | 50% |
| #0000FF | 0 | 0 | 255 | 100 | 100 | 0 | 0 | 240 | 100% | 50% |
| #FFFF00 | 255 | 255 | 0 | 0 | 0 | 100 | 0 | 60 | 100% | 50% |
| #00FFFF | 0 | 255 | 255 | 100 | 0 | 0 | 0 | 180 | 100% | 50% |
| #FF00FF | 255 | 0 | 255 | 0 | 100 | 0 | 0 | 300 | 100% | 50% |
| #800000 | 128 | 0 | 0 | 0 | 100 | 100 | 50 | 0 | 100% | 25% |
| #0A0A0A | 10 | 10 | 10 | 0 | 0 | 0 | 96 | 0 | 0% | 4% |
| #F5F5DC | 245 | 245 | 220 | 0 | 0 | 10 | 4 | 60 | 56% | 91% |
表里两行最值得留意:#000000 对应 (0, 0, 0, 100),靠纯黑版出深黑;#0A0A0A 这种接近黑但不全黑的颜色,K 是 96 而不是 100,剩余 4% 的亮度由纸白提供。印刷时若把深色直接写成四色全满,容易糊版,本页的结果更接近常规分色做法。
结果边界、舍入与适用说明
- HEX 支持 3 位简写与 6 位写法,可带或不带 # 前缀;RGB 三个分量取值范围 0 ~ 255,只接受整数。
- CMYK 四个分量一律四舍五入成 0 ~ 100 的整数百分值,因此反算回 RGB 会有最多 ±1 的偏差,这是取整造成的,不是换算错误。
- 当 max(R', G', B') = 0(即纯黑)时按 K = 1 处理,直接输出 (0, 0, 0, 100),避免 1 − K 为 0 的除零。
- 批量模式里空行会被跳过,出错时给出具体到第几个色值的提示;单行模式下非法输入会直接指出是长度问题还是字符问题。
- 本页做的是数学换算,不含 ICC 色彩配置文件、不含纸张与油墨的实际响应。同一组 CMYK 在铜版纸与胶版纸上印出的观感不同,屏幕所见也不等于印出所见。
- CMYK 只是一种四色印刷模型,不覆盖专色、六色印刷或数字印刷的直接 RGB 输出;涉及品牌色时应以印厂打样为准。
- 导出的 CSV 带 UTF-8 BOM,便于 Excel 正确识别中文表头;用其他工具打开时 BOM 可能显示为不可见字符,属正常现象。
- 页面只做单色换算,不处理透明度、色彩空间转换(如 sRGB 到 Adobe RGB)或色域映射。
常见问题
为什么 RGB 与 CMYK 不能互相精确还原?
因为两者是两套不同的物理模型:RGB 是屏幕自发光加色,CMYK 是油墨反光减色,色域并不重合。换算还要把结果四舍五入成整数百分值,所以反算一定有细微偏差。#FF8800 转成 CMYK(0, 47, 100, 0) 再还原是 RGB(255, 135, 0),比原始值差 −1;#1E90FF 反算回来是 (31, 143, 255),差 +1 / −1,都属正常。
K 这个黑版是怎么算出来的?
公式是 K = 1 − max(R', G', B'),R'、G'、B' 是 R、G、B 除以 255 后的小数。它取三路里最亮的那一路,离纯白越远 K 越大。例如 #808080 三路都是 128,max = 0.5020,K = 1 − 0.5020 = 0.4980,取整就是 50%。这样算的好处是把三色里共有的灰成分抽到黑版,既省彩墨又能压深暗部。
为什么灰色转出来只有 K 有值?
因为灰色的三路分量相等,归一化后 R' = G' = B'。此时 C = (1 − R' − K) ÷ (1 − K) 的分子里 1 − R' 正好等于 K,分子为 0,所以 C = M = Y = 0,只剩下 K 非零。这也是 CMYK 与 RGB 最根本的差异:灰阶在 RGB 里需要三路等值,在 CMYK 里只需要一支黑墨。
三位简写和缺 # 前缀的颜色能识别吗?
可以。三位简写 #F80 会先展开成 #FF8800 再换算;缺少 # 前缀时按六位解析,例如 FF8800 与 #FF8800 等价。如果长度既不是 3 也不是 6,或者出现了 G、Z 这类非十六进制字符,页面会给出具体原因;批量模式下还会指明是第几个色值出错,方便直接定位。
转出来的 CMYK 可以直接拿去印刷吗?
可以作为配比参考,但不能直接当成最终印刷标准。本页输出的是纯数学换算结果,没有套用 ICC 配置文件,也没有考虑纸张吸墨、网点扩大与油墨品牌差异。实际交付时,应把色值给印厂后按其曲线微调,并以打样或数码样为准;品牌色尤其要单独确认。
为什么纯黑不写成四色都满?
因为四色全满在印刷上容易糊版、干燥慢、套印稍有偏移就会发花。常规做法是用 K = 100 的单黑出文字与细线,需要更厚实的黑时才加一点青或品红做「四色黑」。本页对 #000000 的输出正是 (0, 0, 0, 100),只走黑版。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。
相关工具
- 十六进制转RGB:把 HEX 色值拆成 R、G、B 三个十进制分量。
- RGB转十六进制:把 R、G、B 合成一个 HEX 颜色。
- 十六进制转HSL转换器:得到色相、饱和度与明度。
- RGB转HSL转换器:由三个分量求 HSL 表示。
- 十六进制颜色表:按色系查阅 HEX 与中文色名对照。
- 颜色选择器:可视化取色并读取各种色值格式。