the Web Design Speciailist
php 底色太重文字顏色輕重判斷
2017-09-08 17:34:34  PHP

php 底色太重文字顏色輕重自動判斷

在用一些底色時,會抓取你原本設定的顏色,來更改文字顏色是重色還是輕色。

  1. <?php
  2. //==================================================     色碼轉RGB     ==================================================//
  3. function hex2RGB($hexStr, $returnAsString = false, $seperator = ',') {
  4.    
  5.  //去除不必要字元
  6.  $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr);
  7.     $rgbArray = array();
  8.  
  9.  //六碼時
  10.     if (strlen($hexStr) == 6) {
  11.         $colorVal = hexdec($hexStr);
  12.         $rgbArray['red']   = 0xFF & ($colorVal >> 0x10);
  13.         $rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
  14.         $rgbArray['blue']  = 0xFF & $colorVal;
  15.     } else
  16.  //三碼時
  17.  if (strlen($hexStr) == 3) {
  18.         $rgbArray['red']   = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
  19.         $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
  20.         $rgbArray['blue']  = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
  21.     } else {
  22.         return false; //Invalid hex color code
  23.     }
  24.  
  25.     return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray;
  26. }
  27.  
  28.  
  29. //==================================================     底色文字判斷     ==================================================//
  30.  
  31.  
  32. function font_color_show($r,$g,$b)
  33. {
  34.  
  35.  $show = ((($r * 299) + ( $g * 587) + ($b * 114))/255) / 1000;
  36.  if($show < 0.5){
  37.   $color = "#FFF";
  38.  }else{
  39.   $color = "#000";
  40.  }
  41.  
  42.  return  $color;  
  43.  
  44. }
  45.  
  46.  
  47. //==================================================     底色文字判斷     ==================================================//
  48.  
  49. $a="#000000";
  50.   
  51. $bg_color = hex2RGB($a);
  52. $fo_color = font_color_show($bg_color['red'],$bg_color['green'],$bg_color['blue']);
  53.  
  54.  
  55. ?>
  56. <div style="background-color:<?php echo $a; ?>; color:<?php echo $fo_color ?>">test</div>