十六进制转CMYK转换器

输入一个 HEX 色值或单个 RGB 分量,立即得到印刷用的 CMYK 四色油墨值,同时给出 RGB、HSL 与反向校验结果;支持多行批量转换与 CSV 导出,数据在浏览器本地计算,不上传。

—
批量结果
—

本页的核心结论:屏幕上的 RGB 与印刷用的 CMYK 不是一一对应——RGB 是自发光加色,CMYK 是油墨减色,本页按 K = 1 − max(R', G', B') 把三色最小值抽成黑版,示例 #FF8800 得到 CMYK(0, 47, 100, 0),再反算回 RGB 是 (255, 135, 0),与原始 (255, 136, 0) 相差 −1。

使用方法

  1. 在「HEX 色值」里填一个十六进制颜色,例如 #FF8800;支持三位简写 #F80,也支持省略 # 前缀的 FF8800。
  2. 也可以直接在 R、G、B 三个框里填 0 ~ 255 的整数,页面会同步回填 HEX。
  3. 页面立刻给出 RGB、CMYK 四色值、HSL,以及「把 CMYK 反算回 RGB」的校验值与偏差。
  4. 需要一次算多个颜色,就把每个 HEX 单独占一行粘进「批量 HEX」输入框,按 Ctrl / Cmd + Enter 转换(Enter 留给换行),结果按选定的「批量输出分隔符」排列。
  5. 下方「常用颜色转换对照表」列出 14 个典型色值,先显示前 8 行,点「加载更多」展开全部。
  6. 「复制对照表」按 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 的抽取逻辑。为什么要把三色里的最小值单独抽出来当黑版,而不是直接让 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。

再看一个灰阶的例子:#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 为四舍五入后的整数百分值。

HEXRGBCMYKHSL
#FF88002551360047100032100%50%
#1E90FF30144255884400210100%56%
#8080801281281280005000%50%
#FFFFFF255255255000000%100%
#00000000000010000%0%
#FF000025500010010000100%50%
#00FF000255010001000120100%50%
#0000FF0025510010000240100%50%
#FFFF00255255000100060100%50%
#00FFFF0255255100000180100%50%
#FF00FF2550255010000300100%50%
#800000128000100100500100%25%
#0A0A0A1010100009600%4%
#F5F5DC245245220001046056%91%

表里两行最值得留意:#000000 对应 (0, 0, 0, 100),靠纯黑版出深黑;#0A0A0A 这种接近黑但不全黑的颜色,K 是 96 而不是 100,剩余 4% 的亮度由纸白提供。印刷时若把深色直接写成四色全满,容易糊版,本页的结果更接近常规分色做法。

结果边界、舍入与适用说明

常见问题

为什么 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),只走黑版。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。计算在当前浏览器本地完成,不会上传输入内容。

相关工具