使用方法
- 打开页面四个框已经填好 C0 M60 Y100 K0,结果是 #FF6600。点「换算」,或在任一个数字框里按回车,结果立刻出来。
- 四个框的范围都是 0 到 100,步长 1。填了小数、负数或超过 100 的数,会给出指明是哪个通道、填了什么值的提示,不会自动夹到边界。
- 「十六进制色值」是双向的:改一个字符就立刻反推 CMYK 并写回上面四个框。不带 # 也能认,三位缩写会提示请写全六位。
- 上面一排预设色块是十个常用色:青、品红、黄、红、绿、蓝、白、黑、橙、富黑。点一下就把四个通道填好并重算,省得手输。
- 结果区分三层:上面一行是结论,中间是逐通道的算式明细,下面是两块预览——左边是屏幕上的颜色,右边是四色墨量的文字条。
- 「复制结果」复制整段明细;「复制对照表」复制正文那张互补色对照表,制表符分隔。
- 下面的常用色对照表共 20 行,默认显示 12 行。点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的文件,Excel 打开不乱码。
- 「重置」把四个通道与色值恢复成默认的 #FF6600 并重新计算。
这个 CMYK 转 RGB 转换器能解决什么问题
第一类是设计稿交给印刷厂之前的自查。屏幕上调好的颜色要在铜版纸、胶版纸或新闻纸上落地,四色墨的配比和屏幕上的发光不是一回事。先把色值换成 CMYK 看一眼墨量结构:黄墨占比过高、四色总量过大的配色,印出来容易蹭脏、干燥慢。
第二类是把印刷色搬回屏幕。印刷厂给的色卡只有 C、M、Y、K 四个百分比,要做网页、做 PPT、做 Banner,必须先换成 RGB 与十六进制。本页用朴素公式把这一步做完,结果可以直接复制走。
第三类是排查「为什么印出来和屏幕上不一样」。把色值往返一次就能看到问题在哪:屏幕能显示的鲜艳蓝绿,转成 CMYK 之后再转回来会掉一截,这部分损失是色域造成的,不是印厂调错了墨。
第四类是理解四个通道的冗余。同样的中灰,用三层灰墨铺和用一层黑墨铺,朴素公式给出的是同一个数,但实际墨量天差地别。这一页把两组数并列,让这个差别看得见。
计算原理与变量说明
整页只有一组公式,正向三个、反向两个。
| 变量 | 公式 | 说明 |
|---|---|---|
| R 通道 | R = 255 × (1 − C/100) × (1 − K/100) | 青墨吸收红 |
| G 通道 | G = 255 × (1 − M/100) × (1 − K/100) | 品红墨吸收绿 |
| B 通道 | B = 255 × (1 − Y/100) × (1 − K/100) | 黄墨吸收蓝 |
| K 反向 | K = 100 − max(R,G,B)/255 × 100 | 取最亮通道定黑版 |
| C 反向 | C = (255×(1−K/100) − R) / (255×(1−K/100)) × 100 | K=100 时分母为 0 |
减色三对互补,加色与减色正好反过来。屏幕是发光叠加,红加绿得黄;印刷是反光吸收,青墨吸收红光、品红墨吸收绿光、黄墨吸收蓝光,所以 C100 得到 #00FFFF、M100 得到 #FF00FF、Y100 得到 #FFFF00。要得到红,就同时下品红与黄:M100Y100 得 #FF0000;要得到绿,下青与黄;要得到蓝,下青与品红。K 不参与互补,它是整体压暗,乘在所有通道上:C20M20Y20K60 得 #525252,比 255 的灰暗了一大截。
四个通道描述三维颜色,冗余是必然的——这是本页最反直觉的一条。C50M50Y50K0 与 C0M0Y0K50 在朴素公式下算出来完全相同:R 通道都是 128、G 与 B 也是 128,十六进制都是 #808080,R 通道相差 0 级。但真实印刷里这两组完全不同:前者要在纸上铺三层各 50% 的墨,总墨量 150%,后者只铺一层 50% 的黑墨。总墨量决定干燥时间、实地密度与纸张变形,铜版纸上四色总量通常要压在 300% 到 340% 以内,超了就会蹭脏、叠印不实。所以「朴素公式下数值相同」绝不等于「印出来一样」。
黑版怎么生成,有两套策略:UCR 与 GCR。UCR(底色去除)只在暗部用黑墨替换等量的 CMY,中间调仍然靠三层灰墨;GCR(灰成分替代)全程都用黑墨替换掉灰色成分。同一组 RGB 走两种策略会得到不同的 CMYK 数值,印出来应尽可能接近。另外纯 K100 印出来偏灰——墨层薄、密度不够——所以实际印刷常用富黑:C40 M30 Y30 K100 这类配比,黑底下再垫三层彩墨。
色域不可逆,往返一定掉色。sRGB 是加色发光,CMYK 是减色反射,sRGB 的色域明显大于 CMYK,屏幕上鲜艳的蓝绿往往印不出来。数量也不代表色域:RGB 24 位色是 16777216 种组合,CMYK 每通道 101 级共 104060401 种组合,后者组合更多只是分级更细,能覆盖的颜色范围反而更小。CMYK→RGB→CMYK 往返会掉色,真实转换必须依赖色彩管理文件——Japan Color 2001 Coated、GRACoL、SWOP 这些 profile 决定了同样的 CMYK 在不同的纸与油墨上落到哪个颜色。本页的朴素公式不含 profile,给的是参考值,不能当打样依据。
完整示例(数值仅作演示)
默认示例 C0 M60 Y100 K0:R = 255 × 1 × 1 = 255,G = 255 × (1 − 0.6) × 1 = 102,B = 255 × (1 − 1) × 1 = 0,得 RGB(255,102,0),十六进制 #FF6600。这就是常见的标准橙。
八个纯色端点:C0M0Y0K0 得 #FFFFFF,C0M0Y0K100 得 #000000,C100 得 #00FFFF,M100 得 #FF00FF,Y100 得 #FFFF00,M100Y100 得 #FF0000,C100Y100 得 #00FF00,C100M100 得 #0000FF。八端全是 0 或 255,没有中间值。
中灰那组:C50M50Y50K0 与 C0M0Y0K50 都是 #808080,R 通道相差 0 级。这一对是本页最想让人记住的数字——数值上完全一样,墨量上差两倍多。
反向换算的边界:色值填 #000000 时 max(R,G,B) = 0,反推得 K = 100,此时分母 255 × (1 − 100/100) = 0,C 与 M、Y 都算不出来。页面这时给出指明分母为 0 的提示,而不是随便填 0。
常用色对照表
第一张表是三对互补关系与八端纯色,「复制对照表」复制的就是它。
| 组合 | C / M / Y / K | 十六进制 | 说明 |
|---|---|---|---|
| 白(无墨) | 0 / 0 / 0 / 0 | #FFFFFF | 纸的本色 |
| 青 C100 | 100 / 0 / 0 / 0 | #00FFFF | 吸收红 |
| 品红 M100 | 0 / 100 / 0 / 0 | #FF00FF | 吸收绿 |
| 黄 Y100 | 0 / 0 / 100 / 0 | #FFFF00 | 吸收蓝 |
| 红 M100Y100 | 0 / 100 / 100 / 0 | #FF0000 | 两墨叠加 |
| 绿 C100Y100 | 100 / 0 / 100 / 0 | #00FF00 | 两墨叠加 |
| 蓝 C100M100 | 100 / 100 / 0 / 0 | #0000FF | 两墨叠加 |
| 黑 K100 | 0 / 0 / 0 / 100 | #000000 | 纯黑,实印偏灰 |
| 灰(三色) | 50 / 50 / 50 / 0 | #808080 | 三层墨,总墨量 150 |
| 灰(单黑) | 0 / 0 / 0 / 50 | #808080 | 一层墨,与上一行同值 |
| 深灰 | 20 / 20 / 20 / 60 | #525252 | K 参与压暗 |
| 橙 | 0 / 60 / 100 / 0 | #FF6600 | 本页默认示例 |
| 富黑 | 40 / 30 / 30 / 100 | #000000 | 黑底垫三层彩墨 |
| 中灰通道值 | — / — / — / — | 128 | #808080 的十进制 |
第二张表是组合数与分级,用来说明「组合更多不等于色域更大」。
| 色彩空间 | 分级 | 组合数 | 说明 |
|---|---|---|---|
| RGB 24 位色 | 256 × 256 × 256 | 16777216 | 加色发光 |
| CMYK 每通道 | 101 级 | 104060401 | 减色反射 |
| CMYK 分级 | 0 ~ 100 | 101 | 步长 1 |
| 通道极值 | 0 与 255 | 255 | 八端纯色的取值 |
| 富黑配比 | 40 / 30 / 30 / 100 | 100 | K 拉满仍要垫彩墨 |
第三张表是墨量口径,同一个颜色两种写法的差别在哪。
| 写法 | 总墨量 | 十六进制 | 实际差别 |
|---|---|---|---|
| C50 M50 Y50 K0 | 150 | #808080 | 三层墨,干燥慢 |
| C0 M0 Y0 K50 | 50 | #808080 | 一层墨,干燥快 |
| 两者 R 通道之差 | 0 | 128 | 朴素公式下完全相同 |
| 铜版纸总墨量上限 | 300 ~ 340 | — | 超过会蹭脏 |
读法:第一张看八端与互补关系,第二张看组合数与分级,第三张看冗余带来的墨量差。
结果边界、舍入与适用说明
- 四个通道填了小数时提示请填 0 到 100 的整数;负数或超过 100 时提示指名是哪个通道、填了什么。
- 色值不是 6 位十六进制时提示请写成 #FF6600 这样的形式;三位缩写提示请写全六位,本页不自动展开。
- 反向换算时 K = 100 会让分母 255 × (1 − K/100) 等于 0,页面给出指明分母为 0 的提示,不猜 C / M / Y。
- 通道值四舍五入到整数,因此 127.5 取 128;端点 0 与 255 严格不变,#FFFFFF 与 #000000 不会被算成 254 或 1。
- 本页用朴素公式,不含任何色彩管理文件;同样的 CMYK 换一套 profile 会落在不同颜色上。
- 同一组 RGB 有无数组 CMYK 解,本页反向只给 UCR 口径的那一组,不是唯一解。
- 屏幕显示还要看显示器本身的色域与亮度,同一个 #FF6600 在不同屏上观感不一样。
- 本页不算总墨量上限告警、不做灰平衡校正、不做网点扩大补偿,这些属于印前流程的活。
- 整页不联网、不写本地存储,输入的色值只在这一次计算里使用。
常见问题
为什么 C50M50Y50K0 和 K50 算出来一样?
因为四个通道描述三维颜色,本来就冗余。两组在朴素公式下都是 #808080,R 通道相差 0 级;但真实印刷里前者铺三层墨、后者只铺一层,墨量、干燥与密度完全不同。
为什么纯 K100 印出来不够黑?
单层黑墨墨层薄、密度不够,视觉上偏灰。实际印刷常用富黑,比如 C40 M30 Y30 K100,在黑底上再垫三层彩墨。
反向换算时提示分母为 0 是怎么回事?
色值算出 K = 100 时,C 的分母 255 × (1 − K/100) 就等于 0,此时 C / M / Y 无法从色值反推。请把 K 调小或改用纯黑处理。
印出来和屏幕上差很多,是公式错了吗?
不是。sRGB 色域明显大于 CMYK,鲜艳的蓝绿印不出来;CMYK→RGB→CMYK 往返一定掉色。真实转换需要 ICC profile,本页的朴素公式给的是参考值。
组合数 104060401 比 16777216 多,为什么还说色域小?
组合数只说明分级细:CMYK 每通道 101 级。色域是能覆盖的颜色范围,减色反射的上限低于加色发光,两者不是一回事。
UCR 和 GCR 该选哪个?
本页反向换算按 UCR 口径给一组解。UCR 只在暗部用黑替换等量 CMY,GCR 全程替换灰成分,同一组 RGB 两种策略数值不同、印出来应接近,选哪个看印厂要求。
可以只给 0 和 100 两个极值吗?
可以,八端纯色就是这么来的:C0M0Y0K0 得 #FFFFFF、C100 得 #00FFFF、M100 得 #FF00FF、Y100 得 #FFFF00,通道值只有 0 与 255。
输入的色值会上传到服务器吗?
不会。数值只在浏览器里参与乘除运算,没有发起任何网络请求,也没有写入本地存储。
相关工具
- 十六进制转 CMYK 转换:手上是色值要反推四色时直接看这个方向。
- RGB 转十六进制:拿到通道值后换成色值字符串。
- RGB 转 HSL 转换:按色相饱和度调色时更直观。
- 十六进制转 HSL 转换:直接在色值与 HSL 之间来回。
- 颜色对比度检测:定下配色后先测一遍可读性。
- 颜色工具:查看全部颜色工具。