CMYK 转 RGB 转换器

印刷四色与屏幕三色的双向换算:四个百分比换成 0 到 255 的通道值,或者反过来由十六进制色值反推 CMYK。页面用的朴素公式不带色彩管理文件,结果是参考值不是印刷打样值。

朴素公式不含色彩管理文件,屏幕值与印刷打样值会有差别。
CMYK 0 / 60 / 100 / 0 RGB 255 / 102 / 0 十六进制 #FF6600 -- 逐通道 -- R = 255 × (1 − 0/100) × (1 − 0/100) = 255 G = 255 × (1 − 60/100) × (1 − 0/100) = 102 B = 255 × (1 − 100/100) × (1 − 0/100) = 0

屏幕色(RGB)

#FF6600

墨量(四色条)

C 0 · M 60 · Y 100 · K 0
常用色对照表共 20 行,默认显示 12 行。

默认示例 C0 M60 Y100 K0 得 #FF6600。整页不联网、不上传,数值只在浏览器里参与运算。

使用方法

  1. 打开页面四个框已经填好 C0 M60 Y100 K0,结果是 #FF6600。点「换算」,或在任一个数字框里按回车,结果立刻出来。
  2. 四个框的范围都是 0 到 100,步长 1。填了小数、负数或超过 100 的数,会给出指明是哪个通道、填了什么值的提示,不会自动夹到边界。
  3. 「十六进制色值」是双向的:改一个字符就立刻反推 CMYK 并写回上面四个框。不带 # 也能认,三位缩写会提示请写全六位。
  4. 上面一排预设色块是十个常用色:青、品红、黄、红、绿、蓝、白、黑、橙、富黑。点一下就把四个通道填好并重算,省得手输。
  5. 结果区分三层:上面一行是结论,中间是逐通道的算式明细,下面是两块预览——左边是屏幕上的颜色,右边是四色墨量的文字条。
  6. 「复制结果」复制整段明细;「复制对照表」复制正文那张互补色对照表,制表符分隔。
  7. 下面的常用色对照表共 20 行,默认显示 12 行。点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的文件,Excel 打开不乱码。
  8. 「重置」把四个通道与色值恢复成默认的 #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)) × 100K=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纸的本色
青 C100100 / 0 / 0 / 0#00FFFF吸收红
品红 M1000 / 100 / 0 / 0#FF00FF吸收绿
黄 Y1000 / 0 / 100 / 0#FFFF00吸收蓝
红 M100Y1000 / 100 / 100 / 0#FF0000两墨叠加
绿 C100Y100100 / 0 / 100 / 0#00FF00两墨叠加
蓝 C100M100100 / 100 / 0 / 0#0000FF两墨叠加
黑 K1000 / 0 / 0 / 100#000000纯黑,实印偏灰
灰(三色)50 / 50 / 50 / 0#808080三层墨,总墨量 150
灰(单黑)0 / 0 / 0 / 50#808080一层墨,与上一行同值
深灰20 / 20 / 20 / 60#525252K 参与压暗
橙0 / 60 / 100 / 0#FF6600本页默认示例
富黑40 / 30 / 30 / 100#000000黑底垫三层彩墨
中灰通道值— / — / — / —128#808080 的十进制

第二张表是组合数与分级,用来说明「组合更多不等于色域更大」。

色彩空间分级组合数说明
RGB 24 位色256 × 256 × 25616777216加色发光
CMYK 每通道101 级104060401减色反射
CMYK 分级0 ~ 100101步长 1
通道极值0 与 255255八端纯色的取值
富黑配比40 / 30 / 30 / 100100K 拉满仍要垫彩墨

第三张表是墨量口径,同一个颜色两种写法的差别在哪。

写法总墨量十六进制实际差别
C50 M50 Y50 K0150#808080三层墨,干燥慢
C0 M0 Y0 K5050#808080一层墨,干燥快
两者 R 通道之差0128朴素公式下完全相同
铜版纸总墨量上限300 ~ 340—超过会蹭脏

读法:第一张看八端与互补关系,第二张看组合数与分级,第三张看冗余带来的墨量差。

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

常见问题

为什么 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。

输入的色值会上传到服务器吗?

不会。数值只在浏览器里参与乘除运算,没有发起任何网络请求,也没有写入本地存储。

相关工具