• 技术文章 >后端开发 >PHP问题

    php怎么将颜色转十六进制

    藏色散人藏色散人2021-04-01 10:04:33原创66

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

    【推荐学习:PHP视频教程

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

    以上就是php怎么将颜色转十六进制的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php怎么递归删除空数组 下一篇:mac php-fpm报错怎么办
    第15期线上培训班

    相关文章推荐

    • PHP如何将十进制转换为十六进制?(代码示例)• php 字符如何转十六进制• 计算机内部采用的是十六进制数吗?• 人们通常用十六进制而不用二进制书写计算机是为什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网