CMYK 轉 RGB 的轉換使用一套簡單、與裝置無關的公式,將四個印刷油墨百分比對應到螢幕可以顯示的 8 位元紅、綠、藍通道上。就每個顯示通道而言,對應的油墨——紅色用青色、綠色用品紅色、藍色用黃色——會與黑色通道結合、反相、限制在 100% 以內,然後縮放至 0–255,這是依照 W3C CSS Color 規範中發布的簡易後備演算法。結果快速、可預測,對於介面模型、概略的色票比較,或任何需要快速掌握未經色彩描述檔處理過的 CMYK 配方在 sRGB 風格螢幕上可能呈現效果的場合都很實用。代價在於這套轉換被明確標示為近似值:真實的 CMYK 與特定的印刷機、油墨組、紙張、網點擴大、渲染意圖及 ICC 色彩描述檔綁定,因此兩部生產設備即使使用相同的油墨配方,也可能產生出肉眼可見的不同色彩。一個在瀏覽器中執行的 CMYK 轉 RGB 工具會在你的裝置上跑同樣的簡易數學運算,讓你以 8 位元 RGB 與十六進位的方式預覽未經校色的油墨百分比,完全不必上傳任何色彩值。

cmyk to rgb explained
cmyk to rgb 公式說明

用白話說明「CMYK 轉 RGB」的含義

CMYK 以四個百分比來描述色彩——青色、品紅色、黃色與黑色(鍵色)——這些是商業印刷機在紙張上疊印的油墨。RGB 則以三種光的強度——紅、綠、藍——來描述螢幕所發出的色彩。這兩套系統描述的是同一段可見光譜,但物理上正好相反:CMYK 是減色,仰賴油墨反射的光;RGB 是加色,仰賴像素發出的光。因此「CMYK 轉 RGB」並不是一對一的翻譯,而是把一組四個數字的油墨配方,盡可能地對應到一組三個數字的光配方,以便未經校色的 sRGB 螢幕能夠呈現。

當設計師、開發者或印刷買手要求 CMYK 轉 RGB 時,他們通常想要的是以下兩種情況之一:把未經色彩描述檔處理過的油墨配方快速預覽到螢幕上以放入模型,或是為了生產而進行精準的轉換。簡易的瀏覽器工具可以很好地處理第一種用途,因為數學運算是確定性的,結果也是可預測的;但它無法處理第二種用途,因為生產等級的色彩匹配需要 ICC 色彩描述檔與經過校色的工作流程。弄清楚自己處於哪一種情境,是信任結果的第一步。

轉換背後的簡易公式

W3C CSS Color 規範發布了一套簡易的裝置 CMYK 後備機制,讓瀏覽器不必載入色彩描述檔就能呈現 CMYK 色彩值。每個顯示通道的計算是將其對應的互補油墨與黑色通道結合、反相,然後把累計油墨限制在 100% 以內:

R = 255 × (1 − min(1, C × (1 − K) + K)) G = 255 × (1 − min(1, M × (1 − K) + K)) B = 255 × (1 − min(1, Y × (1 − K) + K))

百分比會在公式執行前先正規化到 0–1,得到的 0–1 值會乘以 255,並採用四捨六入五成雙的進位方式序列化,以便數學結果與 W3C 的 firebrick 參考範例一致。min(1, …) 這個包裹層負責把累計油墨限制在 100% 以內,例如:一個只含黑色的配方會在每個顯示通道都產生零,而非出現負值或溢位。(1 − K) 這個乘數會在疊上黑色之後,依剩餘的「白色餘裕」來縮放彩色油墨,這正好對應印刷機分階段減光的過程。你可以在 W3C 裝置 CMYK 規範 中閱讀完整的推導過程。

要看這個公式實際運作,請拿配方 (100, 0, 100, 0)——全青、無品紅、全黃、無黑——代入公式:

R = 255 × (1 − min(1, 1.0 × 1 + 0)) = 255 × 0 = 0 G = 255 × (1 − min(1, 0 × 1 + 0)) = 255 × 1 = 255 B = 255 × (1 − min(1, 1.0 × 1 + 0)) = 255 × 0 = 0

簡易演算法的輸出是 RGB (0, 255, 0),也就是十六進位的 #00FF00。青色油墨會吸收紅光,黃色油墨會吸收藍光,而沒有品紅來吸收綠光,結果就是純粹的螢幕綠——這正是你在紙上疊印青色與黃色所預期的結果。同樣的邏輯也適用於推敲其他任何配方:每一種彩色油墨都會減去其對應的互補通道,而黑色則會同時把三個通道都往下拉。

這個近似法能正確處理的部分

由於公式是封閉式且確定性的,某些廣為人知的 CMYK 端點會對應到你預期中的螢幕色彩。下表列出六組簡易 RGB 輸出穩定且可重現的組合,這些也是 CMYK 轉 RGB 工具在不查詢任何色彩描述檔的情況下能重現的結果。它們是你可以用來對任何公式實作進行健全性檢查的標準參考輸入,正好就是 W3C firebrick 範例與工具主要端點測試案例所要驗證的內容。

CMYK (C, M, Y, K)簡易 RGB代表的意義
0, 0, 0, 0255, 255, 255無油墨——紙張白
100, 0, 0, 00, 255, 255全青色油墨
0, 100, 0, 0255, 0, 255全品紅色油墨
0, 0, 100, 0255, 255, 0全黃色油墨
0, 100, 100, 0255, 0, 0品紅 + 黃——紅
0, 0, 0, 1000, 0, 0全黑色油墨

這些可預測的端點正是簡易方法在粗略色票工作中真正有用的原因。設計師想驗證「全品紅加黃色、不含青色或黑色會產生紅色」這個直覺時,可以直接在工具中驗證,而不必建立色彩管理工作流程。實作中也針對主要端點以外的混合通道,另外提供了獨立的測試案例,這就是為什麼除了上述教科書式的案例之外,你也能信賴 (40, 80, 20, 10) 這類配方的數學運算結果。

為什麼結果仍然只是近似值

真實的 CMYK 並不是一個固定的色彩空間——它是一組與裝置相關的空間集合,其外觀會受到印刷機、油墨組、紙張材質、網點擴大、渲染意圖,以及實際生產裝置所內嵌 ICC 色彩描述檔的影響。兩部印刷機使用相同的 CMYK 配方,可能印出肉眼可見不同的樣張;同一部印刷機換了紙張,也可能印出肉眼可見不同的樣張;即便是同一部印刷機搭配同一種紙張,只要改變渲染意圖,色彩也可能產生可感知的偏移。簡易公式完全沒把這些變因納入考量,因此得到的 RGB 最好被視為一個起點,而不是一份契約。

具備色彩描述檔感知能力的軟體會在來源 CMYK 上附加一個 ICC 色彩描述檔,在目標 RGB 上附加另一個 ICC 色彩描述檔,然後透過色彩描述檔連接空間 (PCS) 進行色彩轉換。例如 Adobe 的應用程式在轉換時,會考慮特定的 CMYK 與 RGB 色彩空間、渲染意圖、油墨以及輸出裝置。一個沒有載入任何色彩描述檔的瀏覽器工具,所產生的數值勢必會與經過校色工作流程所得到的結果有所出入,有時差幾個 RGB 級數,有時在高飽和或接近黑色的區域則差距更大。這就是為什麼這個結果在整份 W3C 規範中都被刻意標示為近似值。

如何在瀏覽器中將 CMYK 轉換為 RGB

  1. 在任何現代瀏覽器中開啟 CMYK 轉 RGB 工具。
  2. 調整青色、品紅色、黃色與黑色的滑桿,或直接輸入百分比,範圍為 0 到 100。
  3. 在同一個畫面上讀取即時的 8 位元紅、綠、藍通道值、六位數十六進位值,以及視覺色塊。
  4. 將十六進位碼或 RGB 三元組複製到你的介面模型、色票或前端樣式表中。
  5. 保留原始的 CMYK 數值,以便日後與印刷廠溝通時,印刷廠會需要它們以及正確的輸出色彩描述檔。

轉換與預覽都在本機進行——不會將任何色彩值傳送到伺服器,因此你可以放心地用機密配方反覆測試,而無須擔心客戶作品外洩。由於你移動滑桿時頁面會立即更新,因此這是並列比較多種油墨組合、快速找出品牌印刷規範與螢幕模型之間明顯落差的好方法。請把結果當作對模型的一項健全性檢查,而非印刷目標。

什麼時候你需要改用具備色彩描述檔感知能力的軟體

簡易的瀏覽器預覽適合用於早期探索、色票粗稿與快速模型,但一旦色彩精準度在商業上至關重要,它就不再合適。印刷打樣、合約色彩目標、包裝刀版,以及品牌色彩再現,全都需要 ICC 色彩描述檔、經過校色的顯示器,以及經印刷買手核可的實體打樣。在這些情境下,請保留原始的 CMYK 數值、向印刷廠索取正確的輸出色彩描述檔,並搭配經校色的螢幕與受控的看色燈箱,使用具備色彩描述檔感知能力的軟體。本工具絕不能當作印刷打樣,也不能用來取代經過校色的工作流程。

若想更深入了解在任何特定印刷專案中,使用 CMYK 與 RGB 各自有何取捨,CMYK 與 RGB 印刷工作流程指南 會逐一說明每種模型何時是較安全的預設選項。如果你需要反方向轉換——把螢幕上的 RGB 色彩轉成 CMYK 油墨百分比——對應的 RGB 轉 CMYK 轉換器 會在同一個瀏覽器中執行反向數學運算,完全不必上傳你的數值。

如果你正在權衡各種選項,將十六進位轉換為 RGB 通道位元組與 Alpha 對此有詳細說明。