PHP中十六進制顏色與RGB顏色值互轉(zhuǎn)的方法
16進制的顏色值通常表示為#FFFFFF,當前也有縮減為#FFF,前提是兩位兩位必需相同,例如#FEFEFE這種,就不能進行縮減。而RGB的顏色格式是由3組0~255的數(shù)字構(gòu)成,分別代表紅(Red)、綠(Green)、藍(Blue)的色值。
那么,將16進制轉(zhuǎn)換為RGB色值,其實就是分別把#號后面的兩位作為一個單位轉(zhuǎn)換成十進制。
代碼如下:
/** * 將16進制顏色轉(zhuǎn)換為RGB * author chabaoo.cn */ function hex2rgb($hexColor){ $color=str_replace('#','',$hexColor); if (strlen($color)> 3){ $rgb=array( 'r'=>hexdec(substr($color,0,2)), 'g'=>hexdec(substr($color,2,2)), 'b'=>hexdec(substr($color,4,2)) ); }else{ $r=substr($color,0,1). substr($color,0,1); $g=substr($color,1,1). substr($color,1,1); $b=substr($color,2,1). substr($color,2,1); $rgb=array( 'r'=>hexdec($r), 'g'=>hexdec($g), 'b'=>hexdec($b) ); } return $rgb; }
另一種寫法
/** * 十六進制轉(zhuǎn)RGB * @param string $color 16進制顏色值 * @return array */ public static function hex2rgb($color) { $hexColor = str_replace('#', '', $color); $lens = strlen($hexColor); if ($lens != 3 && $lens != 6) { return false; } $newcolor = ''; if ($lens == 3) { for ($i = 0; $i < $lens; $i++) { $newcolor .= $hexColor[$i] . $hexColor[$i]; } } else { $newcolor = $hexColor; } $hex = str_split($newcolor, 2); $rgb = []; foreach ($hex as $key => $vls) { $rgb[] = hexdec($vls); } return $rgb; }
RGB顏色和十六進制顏色互轉(zhuǎn)
/** * RGB轉(zhuǎn) 十六進制 * @param $rgb RGB顏色的字符串 如:rgb(255,255,255); * @return string 十六進制顏色值 如:#FFFFFF */ function RGBToHex($rgb){ $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/"; $re = preg_match($regexp, $rgb, $match); $re = array_shift($match); $hexColor = "#"; $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); for ($i = 0; $i < 3; $i++) { $r = null; $c = $match[$i]; $hexAr = array(); while ($c > 16) { $r = $c % 16; $c = ($c / 16) >> 0; array_push($hexAr, $hex[$r]); } array_push($hexAr, $hex[$c]); $ret = array_reverse($hexAr); $item = implode('', $ret); $item = str_pad($item, 2, '0', STR_PAD_LEFT); $hexColor .= $item; } return $hexColor; } /** * 十六進制 轉(zhuǎn) RGB */ function hex2rgb($hexColor) { $color = str_replace('#', '', $hexColor); if (strlen($color) > 3) { $rgb = array( 'r' => hexdec(substr($color, 0, 2)), 'g' => hexdec(substr($color, 2, 2)), 'b' => hexdec(substr($color, 4, 2)) ); } else { $color = $hexColor; $r = substr($color, 0, 1) . substr($color, 0, 1); $g = substr($color, 1, 1) . substr($color, 1, 1); $b = substr($color, 2, 1) . substr($color, 2, 1); $rgb = array( 'r' => hexdec($r), 'g' => hexdec($g), 'b' => hexdec($b) ); } return $rgb; }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
php數(shù)組函數(shù)序列之ksort()對數(shù)組的元素鍵名進行升序排序,保持索引關(guān)系
ksort() 函數(shù)按照鍵名對數(shù)組升序排序,為數(shù)組值保留原來的鍵??蛇x的第二個參數(shù)包含附加的排序標志2011-11-11PHP使用PHPexcel導(dǎo)入導(dǎo)出數(shù)據(jù)的方法
這篇文章主要介紹了PHP使用PHPexcel導(dǎo)入導(dǎo)出數(shù)據(jù)的方法,以實例形式較為詳細的分析了PHP使用PHPexcel實現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出操作相關(guān)技巧,需要的朋友可以參考下2015-11-11