当前位置:Gxlcms > PHP教程 > php怎么将颜色转十六进制

php怎么将颜色转十六进制

时间:2021-07-01 10:21:17 帮助过:20人阅读

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色值,其实就是分别把#号后面的两位作为一个单位转换成十进制。

代码如下:

  1. /**
  2. * 将16进制颜色转换为RGB
  3. * author www.jb51.net
  4. */
  5. function hex2rgb($hexColor){
  6. $color=str_replace('#','',$hexColor);
  7. if (strlen($color)> 3){
  8. $rgb=array(
  9. 'r'=>hexdec(substr($color,0,2)),
  10. 'g'=>hexdec(substr($color,2,2)),
  11. 'b'=>hexdec(substr($color,4,2))
  12. );
  13. }else{
  14. $r=substr($color,0,1). substr($color,0,1);
  15. $g=substr($color,1,1). substr($color,1,1);
  16. $b=substr($color,2,1). substr($color,2,1);
  17. $rgb=array(
  18. 'r'=>hexdec($r),
  19. 'g'=>hexdec($g),
  20. 'b'=>hexdec($b)
  21. );
  22. }
  23. return $rgb;
  24. }

另一种写法

  1. /**
  2. * 十六进制转RGB
  3. * @param string $color 16进制颜色值
  4. * @return array
  5. */
  6. public static function hex2rgb($color) {
  7. $hexColor = str_replace('#', '', $color);
  8. $lens = strlen($hexColor);
  9. if ($lens != 3 && $lens != 6) {
  10. return false;
  11. }
  12. $newcolor = '';
  13. if ($lens == 3) {
  14. for ($i = 0; $i < $lens; $i++) {
  15. $newcolor .= $hexColor[$i] . $hexColor[$i];
  16. }
  17. } else {
  18. $newcolor = $hexColor;
  19. }
  20. $hex = str_split($newcolor, 2);
  21. $rgb = [];
  22. foreach ($hex as $key => $vls) {
  23. $rgb[] = hexdec($vls);
  24. }
  25. return $rgb;
  26. }

【推荐学习:PHP视频教程】

RGB颜色和十六进制颜色互转

  1. /**
  2. * RGB转 十六进制
  3. * @param $rgb RGB颜色的字符串 如:rgb(255,255,255);
  4. * @return string 十六进制颜色值 如:#FFFFFF
  5. */
  6. function RGBToHex($rgb){
  7. $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/";
  8. $re = preg_match($regexp, $rgb, $match);
  9. $re = array_shift($match);
  10. $hexColor = "#";
  11. $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
  12. for ($i = 0; $i < 3; $i++) {
  13. $r = null;
  14. $c = $match[$i];
  15. $hexAr = array();
  16. while ($c > 16) {
  17. $r = $c % 16;
  18. $c = ($c / 16) >> 0;
  19. array_push($hexAr, $hex[$r]);
  20. }
  21. array_push($hexAr, $hex[$c]);
  22. $ret = array_reverse($hexAr);
  23. $item = implode('', $ret);
  24. $item = str_pad($item, 2, '0', STR_PAD_LEFT);
  25. $hexColor .= $item;
  26. }
  27. return $hexColor;
  28. }
  29. /**
  30. * 十六进制 转 RGB
  31. */
  32. function hex2rgb($hexColor) {
  33. $color = str_replace('#', '', $hexColor);
  34. if (strlen($color) > 3) {
  35. $rgb = array(
  36. 'r' => hexdec(substr($color, 0, 2)),
  37. 'g' => hexdec(substr($color, 2, 2)),
  38. 'b' => hexdec(substr($color, 4, 2))
  39. );
  40. } else {
  41. $color = $hexColor;
  42. $r = substr($color, 0, 1) . substr($color, 0, 1);
  43. $g = substr($color, 1, 1) . substr($color, 1, 1);
  44. $b = substr($color, 2, 1) . substr($color, 2, 1);
  45. $rgb = array(
  46. 'r' => hexdec($r),
  47. 'g' => hexdec($g),
  48. 'b' => hexdec($b)
  49. );
  50. }
  51. return $rgb;
  52. }

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

人气教程排行