开发者社区> 技术小胖子> 正文

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,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
php中的进制和编码
字符串在线转2进制 工具 由于计算机是MG发明的,一开始的映射表是ASSIC码,用一个字节(8位)表示一个符号或者字母 比如小写字母a对应的是97 相应的2进制为01100001 8个位的2进制最大值是11111111 所以当它不够用之后,就出现了双字节字符集
29 0
PHP函数运用之怎么进行进制的转换
在上一篇文章《PHP函数运用之返回某个日期的前一天和后一天》中,我们介绍了利用strtotime() 函数获取给定日期前一天和后一天日期、前一月和后一月日期、一周和后一周的日期等方法,感兴趣的朋友可以学习了解一下~ 本文的重点是“进制转换”,介绍一下二进制数和十进制数的相互转换、十进制数和十六进制数的相互转换、十进制数和八进制数的相互转换。 二进制数和十进制数的相互转换 1、二进制数转十进制数 可以使用 bindec(二进制字符串) 函数,它可把二进制数转换为十进制数。
74 0
基于PHP和MySQL的新闻发布系统——【功能优化】
基于PHP和MySQL的新闻发布系统——【功能优化】
33659 0
基于PHP和MySQL的新闻发布系统
基于PHP和MySQL的新闻发布系统
42 0
开心档-软件开发入门之PHP - AJAX 与 MySQL
本文主要讲解AJAX 可用来与数据库进行交互式通信。
36 0
如何修复“PHP 安装缺少 WordPress 所需的 MySQL 扩展”的错误?
在WordPress建站,WordPress定制开发过程中,开发者容易遇见“您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展”的错误提示,如果出现这样的情况,应该怎么办?北京六翼信息有限公司的开发工程师指出,要修复错误“您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展”,您需要确保您的 PHP 安装已正确安装和配置 MySQL 数据库驱动程序 (mysqlnd) 和 mysqli 扩展。只有这样,您才能恢复 WordPress 和 WordPress 数据库之间的正常连接,并让您的网站重新运行。
23 0
ECS配置mySQL\MariaDB和PHP环境
ECS配置mySQL\MariaDB和PHP环境
27 0
php操作mysql防止sql注入(合集)
php操作mysql防止sql注入(合集)
101 0
Centos中查看nginx、apache、php、mysql配置文件路径
Centos中查看nginx、apache、php、mysql配置文件路径
662 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PHP安全开发_从白帽角度做安全
立即下载
PHP在机器学习上的应用及云深度学习平台的架构设计与实现
立即下载
复杂PHP系统性能瓶颈排查及优化
立即下载