当前位置:首页 > PHP教程 > php应用 > 列表

PHP中十六进制颜色与RGB颜色值互转的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-12 20:48:08 浏览: 评论:0 

今天小编就为大家分享一篇关于PHP中十六进制颜色与RGB颜色值互转的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧。

16进制的颜色值通常表示为#FFFFFF,当前也有缩减为#FFF,前提是两位两位必需相同,例如#FEFEFE这种,就不能进行缩减。而RGB的颜色格式是由3组0~255的数字构成,分别代表红(Red)、绿(Green)、蓝(Blue)的色值。

那么,将16进制转换为RGB色值,其实就是分别把#号后面的两位作为一个单位转换成十进制。

代码如下:

  1. /**  
  2. * 将16进制颜色转换为RGB 
  3. * author www.jb51.net 
  4. */ 
  5. function hex2rgb($hexColor){ 
  6.  $color=str_replace('#','',$hexColor); 
  7.  if (strlen($color)> 3){ 
  8.  $rgb=array
  9.   'r'=>hexdec(substr($color,0,2)), 
  10.   'g'=>hexdec(substr($color,2,2)), 
  11.   'b'=>hexdec(substr($color,4,2)) 
  12.  ); 
  13.  }else
  14.  $r=substr($color,0,1). substr($color,0,1); 
  15.  $g=substr($color,1,1). substr($color,1,1); 
  16.  $b=substr($color,2,1). substr($color,2,1); 
  17.  $rgb=array(  
  18.   'r'=>hexdec($r), 
  19.   'g'=>hexdec($g), 
  20.   'b'=>hexdec($b
  21.  ); 
  22.  } 
  23.  return $rgb

另一种写法

  1. /** 
  2.    * 十六进制转RGB 
  3.    * @param string $color 16进制颜色值 
  4.    * @return array 
  5.    */ 
  6.   public static function hex2rgb($color) { 
  7.     $hexColor = str_replace('#'''$color); 
  8.     $lens = strlen($hexColor); 
  9.     if ($lens != 3 && $lens != 6) { 
  10.       return false; 
  11.     } 
  12.     $newcolor = ''
  13.     if ($lens == 3) { 
  14.       for ($i = 0; $i < $lens$i++) { 
  15.         $newcolor .= $hexColor[$i] . $hexColor[$i]; 
  16.       } 
  17.     } else { 
  18.       $newcolor = $hexColor
  19.     } 
  20.     $hex = str_split($newcolor, 2); 
  21.     $rgb = []; 
  22.     foreach ($hex as $key => $vls) { 
  23.       $rgb[] = hexdec($vls); 
  24.     } 
  25.     return $rgb
  26.   } 

RGB颜色和十六进制颜色互转

  1. /** 
  2.    * RGB转 十六进制 
  3.    * @param $rgb RGB颜色的字符串 如:rgb(255,255,255); 
  4.    * @return string 十六进制颜色值 如:#FFFFFF 
  5.    */ 
  6.   function RGBToHex($rgb){ 
  7.     $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/"
  8.     $re = preg_match($regexp$rgb$match); 
  9.     $re = array_shift($match); 
  10.     $hexColor = "#"
  11.     $hex = array('0''1''2''3''4''5''6''7''8''9''A''B''C''D''E''F'); 
  12.     for ($i = 0; $i < 3; $i++) { 
  13.       $r = null; 
  14.       $c = $match[$i]; 
  15.       $hexAr = array(); 
  16.       while ($c > 16) { 
  17.         $r = $c % 16; 
  18.         $c = ($c / 16) >> 0; 
  19.         array_push($hexAr$hex[$r]); 
  20.       } 
  21.       array_push($hexAr$hex[$c]); 
  22.       $ret = array_reverse($hexAr); 
  23.       $item = implode(''$ret); 
  24.       $item = str_pad($item, 2, '0', STR_PAD_LEFT); 
  25.       $hexColor .= $item
  26.     } 
  27.     return $hexColor
  28.   } 
  29.   /** 
  30.    * 十六进制 转 RGB 
  31.    */ 
  32.   function hex2rgb($hexColor) { 
  33.     $color = str_replace('#'''$hexColor); 
  34.     if (strlen($color) > 3) { 
  35.       $rgb = array
  36.         'r' => hexdec(substr($color, 0, 2)), 
  37.         'g' => hexdec(substr($color, 2, 2)), 
  38.         'b' => hexdec(substr($color, 4, 2)) 
  39.       ); 
  40.     } else { 
  41.       $color = $hexColor
  42.       $r = substr($color, 0, 1) . substr($color, 0, 1); 
  43.       $g = substr($color, 1, 1) . substr($color, 1, 1); 
  44.       $b = substr($color, 2, 1) . substr($color, 2, 1); 
  45.       $rgb = array
  46.         'r' => hexdec($r), 
  47.         'g' => hexdec($g), 
  48.         'b' => hexdec($b
  49.       ); 
  50.     } 
  51.     return $rgb
  52.   }

Tags: PHP十六进制 RGB

分享到: