2012-03-22 105 views
1

我使用這個PHP代碼PHP - 轉換RGB值到CMYK百分率值

<?php 
$im = imagecreatefrompng("img/t4.png"); 
$rgb = imagecolorat($im, 15, 15); 
$r = ($rgb >> 16) & 0xFF; 
$g = ($rgb >> 8) & 0xFF; 
$b = $rgb & 0xFF; 
?> 

獲得RGB值,我需要CMYK百分比也

可有人請給我索姆引導線。

謝謝。

+0

看到http://stackoverflow.com/questions/4858131/rgb-to-cmyk-and-back-algorithm – ShinTakezou 2012-03-22 06:45:24

回答

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

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); 
    $cyan = @(($cyan - $black)/(255 - $black)) * 255; 
    $magenta = @(($magenta - $black)/(255 - $black)) * 255; 
    $yellow = @(($yellow - $black)/(255 - $black)) * 255; 
    return array('c' => $cyan/255, 
       'm' => $magenta/255, 
       'y' => $yellow/255, 
       'k' => $black/255); 
} 

$color=rgb2cmyk(hex2rgb('#FF0000')); 
pdf_setcolor($pdf, "both", "cmyk", $color['c'], $color['m'], $color['y'], $color['k']); 
?> 
+0

這是一個很好的答案!關於這一點的細節是,這個功能已經執行UCR(「去除顏色」),它用黑色代替平均顏色的份額。這通常導致更多的「中性」色彩,特別是灰色色調經常以這種方式失去其色調。 – flomei 2017-12-07 10:48:27