当前位置 博文首页 > 文章内容

    php怎么将颜色转十六进制

    作者:shunshunshun18 栏目:未分类 时间:2021-04-01 10:45:36

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    php将颜色转十六进制的方法:首先创建一个PHP示例文件;然后通过“function RGBToHex($rgb){...}”方法将RGB颜色转为十六进制颜色即可。

    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

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