2013-11-24 141 views
-4

我使用php將十六進制顏色值轉換爲rgb顏色值。但是,當我看着兩種顏色他們看起來不一樣?十六進制顏色到rgb顏色不準確?

我在文本中使用rgb值作爲背景顏色以圖像腳本。使用PHP。

任何想法如何獲得rgb中的精確顏色?

代碼已包含在下面。

function hex2rgb($hex) { 
     $hex = str_replace("#", "", $hex); 

      if(strlen($hex) == 3) { 
       $r = hexdec(substr($hex,0,1).substr($hex,0,1)); 
       $g = hexdec(substr($hex,1,1).substr($hex,1,1)); 
       $b = hexdec(substr($hex,2,1).substr($hex,2,1)); 
      } else { 
       $r = hexdec(substr($hex,0,2)); 
       $g = hexdec(substr($hex,2,2)); 
       $b = hexdec(substr($hex,4,2)); 
     } 
    $rgb = array($r, $g, $b); 
     //return implode(",", $rgb); // returns the rgb values separated by commas 
     return $rgb; // returns an array with the rgb values 
     } 

事情是顏色不匹配。

感謝

+4

你如何將這些顏色嗎?你能告訴我們一些代碼嗎? – idmean

回答

0

下面的代碼可以轉換到#dfdfdf(239,239,239)

<?php 
    function hex2rgb($colour) { 
    if ($colour[0] == '#') { 
    $colour = substr($colour, 1); 
    } 
    if (strlen($colour) == 6) { 
    list($r, $g, $b) = array($colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5]); 
    } elseif (strlen($colour) == 3) { 
    list($r, $g, $b) = array($colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2]); 
    } else { 
    return false; 
    } 
    $r = hexdec($r); 
    $g = hexdec($g); 
    $b = hexdec($b); 
    return array('red' => $r, 'green' => $g, 'blue' => $b); 
    } 
    ?>