← 返回博客

如何将 CMYK 颜色转换为 RGB

2026-04-15 · 5 分钟阅读

← 返回博客

如何将 CMYK 颜色转换为 RGB

· 6 分钟阅读

CMYK 和 RGB:两种本质不同的颜色模型

RGB(红绿蓝)是加色模型,用于发光设备(显示器、手机屏幕),通过混合红、绿、蓝光来创造颜色,所有通道为 0 时是黑色,所有通道为最大值时是白色。CMYK(青品黄黑)是减色模型,用于印刷,通过墨水吸收光线来创造颜色,所有墨水为 0% 时是白色(纸张本色),所有墨水为 100% 时理论上是黑色。

CMYK 转 RGB 的数学公式

CMYK 值通常以百分比(0–100)或小数(0–1)表示。转换为 RGB(0–255)的公式如下:

/* CMYK to RGB Formula */
/* Input: C, M, Y, K all as decimals 0-1 */

R = 255 × (1 - C) × (1 - K)
G = 255 × (1 - M) × (1 - K)
B = 255 × (1 - Y) × (1 - K)

Example: CMYK(0.5, 0.2, 0, 0.1)
R = 255 × (1 - 0.5) × (1 - 0.1) = 255 × 0.5 × 0.9 = 114.75 ≈ 115
G = 255 × (1 - 0.2) × (1 - 0.1) = 255 × 0.8 × 0.9 = 183.6  ≈ 184
B = 255 × (1 - 0.0) × (1 - 0.1) = 255 × 1.0 × 0.9 = 229.5  ≈ 230

RGB: rgb(115, 184, 230)

如果 CMYK 值以百分比(0–100)表示,先除以 100 转换为小数再代入公式。最终 RGB 值需要四舍五入为整数。

JavaScript 实现

function cmykToRgb(c, m, y, k) {
  // Normalize to 0-1 range if given as 0-100
  if (c > 1) { c /= 100; m /= 100; y /= 100; k /= 100; }

  const r = Math.round(255 * (1 - c) * (1 - k));
  const g = Math.round(255 * (1 - m) * (1 - k));
  const b = Math.round(255 * (1 - y) * (1 - k));

  return { r, g, b };
}

// Usage with 0-100 values
cmykToRgb(50, 20, 0, 10); // { r: 115, g: 184, b: 230 }

// Usage with 0-1 values
cmykToRgb(0.5, 0.2, 0, 0.1); // { r: 115, g: 184, b: 230 }

为什么转换结果和实际印刷颜色不匹配

CMYK 转 RGB 的数学转换只能给出一个近似值,而非精确的颜色匹配。原因有多方面:印刷颜色受纸张类型、墨水品牌、打印机特性影响;不同的 CMYK 色域(如 CMYK Coated 和 CMYK Uncoated)有不同的颜色映射;CMYK 色域比 sRGB 色域小,但在某些颜色(如深蓝色)上比 sRGB 更鲜艳,转换时会丢失色域外的颜色信息。

实际工作中的颜色管理

在设计需要同时用于屏幕和印刷的项目时,正确的做法是:使用 Adobe Illustrator 或 Photoshop 等支持颜色配置文件的专业工具,指定正确的颜色空间(如 Adobe RGB 或 sRGB 用于屏幕,CMYK Coated FOGRA39 用于欧洲印刷);让软件进行配置文件转换而不是手动用公式计算;以及始终在实际印刷材料上打样验证颜色效果。

RGB 转 CMYK 的逆运算

function rgbToCmyk(r, g, b) {
  r /= 255; g /= 255; b /= 255;

  const k = 1 - Math.max(r, g, b);
  if (k === 1) return { c: 0, m: 0, y: 0, k: 100 }; // Black

  const c = (1 - r - k) / (1 - k);
  const m = (1 - g - k) / (1 - k);
  const y = (1 - b - k) / (1 - k);

  return {
    c: Math.round(c * 100),
    m: Math.round(m * 100),
    y: Math.round(y * 100),
    k: Math.round(k * 100)
  };
}

rgbToCmyk(115, 184, 230);
// { c: 50, m: 20, y: 0, k: 10 }

品牌颜色在印刷中的正确处理

当你的品牌有指定的 HEX 或 RGB 颜色时,转换为 CMYK 用于印刷的步骤是:先在 Photoshop 或 Illustrator 中输入 HEX/RGB 值,然后使用软色化(Soft Proofing)功能预览印刷效果,调整 CMYK 值直到屏幕预览与期望的印刷效果接近,最后与印刷商沟通并打样确认。纯数学公式得到的 CMYK 值只是起点,而非最终答案。

立即尝试在线工具,无需安装,免费使用。

打开工具 →

立即免费使用相关工具

免费使用 →