php中RGB转十六进制、十六进制转RGB

简介:

php中RGB转十六进制、十六进制转RGB

在js调色器中,不同的浏览器获取到的颜色值会不一样,比如ie是十六进制:#FF00FF,而火狐和谷歌浏览器中:rgb(255,255,255)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
* 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
* @param string $hexColor 十六颜色 ,如:#ff00ff
* @return array RGB数组
*/
function  hColor2RGB( $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  str_replace ( '#' '' $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 ;
}
print_r(RGBToHex( "rgb(255,255,255)" ));  //RGB转 16进制
print_r(hColor2RGB( '#ff00ff' ));  //十六进制转 RGB


代码执行转换结果:

095119303.jpg

16进制颜色转换为RGB色值,另一种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
/**
* 16进制颜色转换为RGB色值
* @method hex2rgb
*/
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  str_replace ( '#' '' $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 ;
}
print_r(hex2rgb( "#FFFFFF" ));
?>





附:js调色器(js弹出颜色选择框




      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1217753,如需转载请自行联系原作者





相关文章
|
9月前
|
PHP 数据安全/隐私保护
PHP函数学习:16进制ASCII转化为字符串加密解密
PHP函数学习:16进制ASCII转化为字符串加密解密
230 0
|
网络协议 编译器 PHP
php中的进制和编码
字符串在线转2进制 工具 由于计算机是MG发明的,一开始的映射表是ASSIC码,用一个字节(8位)表示一个符号或者字母 比如小写字母a对应的是97 相应的2进制为01100001 8个位的2进制最大值是11111111 所以当它不够用之后,就出现了双字节字符集
116 0
php中的进制和编码
|
PHP
PHP函数运用之怎么进行进制的转换
在上一篇文章《PHP函数运用之返回某个日期的前一天和后一天》中,我们介绍了利用strtotime() 函数获取给定日期前一天和后一天日期、前一月和后一月日期、一周和后一周的日期等方法,感兴趣的朋友可以学习了解一下~ 本文的重点是“进制转换”,介绍一下二进制数和十进制数的相互转换、十进制数和十六进制数的相互转换、十进制数和八进制数的相互转换。 二进制数和十进制数的相互转换 1、二进制数转十进制数 可以使用 bindec(二进制字符串) 函数,它可把二进制数转换为十进制数。
112 0
|
7月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
81 0
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
107 0
|
7月前
|
关系型数据库 MySQL Unix
PHP MySql 安装与连接
PHP MySql 安装与连接
130 0
|
3月前
|
关系型数据库 MySQL PHP
|
11天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
7月前
|
关系型数据库 MySQL 数据库连接
PHP 原生操作 Mysql 增删改查案例
PHP 原生操作 Mysql 增删改查案例
87 0