• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP中十六进制颜色与RGB颜色值互转的方法

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

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

    代码如下:

    /** 
    * 将16进制颜色转换为RGB
    * author www.jb51.net
    */ 
    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;
    }

    另一种写法

    /**
       * 十六进制转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颜色和十六进制颜色互转

    /**
       * 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;
      }

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    您可能感兴趣的文章:
    • PHP5中使用mysqli的prepare操作数据库的介绍
    • PHP中单例模式的使用场景与使用方法讲解
    • PHP自动生成缩略图函数的源码示例
    • PHP添加文字水印或图片水印的水印类完整源代码与使用示例
    • PHP实现对数字分隔加千分号的方法
    • PHP生成指定范围内的N个不重复的随机数
    • PHP将整数数字转换为罗马数字实例分享
    • Ubuntu16.04搭建php5.6Web服务器环境
    • PHP标准库(PHP SPL)详解
    • PHP后台备份MySQL数据库的源码实例
    上一篇:PHP中ltrim()函数的用法与实例讲解
    下一篇:PHP生成指定范围内的N个不重复的随机数
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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