PHP RGB颜色和十六进制颜色互转
08-23 阅读:152

   /**     * RGB转 十六进制     * @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;    }


   /**     * 十六进制 转 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;    }

本文关键词:颜色 十六进制 RGB PHP
返回