首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP CMYK 與 RGB 顏色空間相互轉換代碼實現

     編輯:PHP 綜合知識

印刷行業常需 CMYK ↔ RGB 轉換。本文提供兩個純 PHP 函數:hex2rgb() 解析十六進制顏色、rgb2cmyk() 執行標準轉換算法(基於 255 域歸一化)。

完整代碼

function hex2rgb($hex)
{
    $color = str_replace('#', '', $hex);
    return [
        'r' => hexdec(substr($color, 0, 2)),
        'g' => hexdec(substr($color, 2, 2)),
        'b' => hexdec(substr($color, 4, 2)),
    ];
}

function rgb2cmyk($var1, $g = 0, $b = 0)
{
    // 支持數組或三參數調用
    if (is_array($var1)) {
        $r = $var1['r']; $g = $var1['g']; $b = $var1['b'];
    } else {
        $r = $var1;
    }

    $cyan    = 255 - $r;
    $magenta = 255 - $g;
    $yellow  = 255 - $b;
    $black   = min($cyan, $magenta, $yellow);

    // 避免除零:@ 抑制警告,黑色全滿時分母為 0
    $cyan    = @(($cyan - $black) / (255 - $black)) * 255;
    $magenta = @(($magenta - $black) / (255 - $black)) * 255;
    $yellow  = @(($yellow - $black) / (255 - $black)) * 255;

    // 歸一化到 0-1 區間(印刷標準)
    return [
        'c' => $cyan / 255,
        'm' => $magenta / 255,
        'y' => $yellow / 255,
        'k' => $black / 255,
    ];
}

// 使用示例
$cmyk = rgb2cmyk(hex2rgb('#FF0000')); // 純紅
print_r($cmyk);

算法原理速記

C = 1 - R/255
M = 1 - G/255
Y = 1 - B/255
K = min(C, M, Y)

C' = (C - K) / (1 - K)
M' = (M - K) / (1 - K)
Y' = (Y - K) / (1 - K)
  • RGB 為加色模式(發光),CMYK 為減色模式(油墨吸收光)。
  • K (Key/Black) 取三色最小值,代表共同的黑色成分,提取後剩餘為純色成分。
  • 歸一化到 0-1 便於印刷 RIP 直接使用。

擴展:CMYK → RGB 反向轉換

function cmyk2rgb($c, $m, $y, $k)
{
    $r = 255 * (1 - $c) * (1 - $k);
    $g = 255 * (1 - $m) * (1 - $k);
    $b = 255 * (1 - $y) * (1 - $k);
    return ['r' => round($r), 'g' => round($g), 'b' => round($b)];
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved