如何使用PHP检测“轻”颜色
发布时间:2020-12-13 17:35:27 所属栏目:PHP教程 来源:网络整理
导读:我正在开展一个动态商店项目,我使用循环来打印产品的所有颜色选项作为颜色框,但我真的需要添加一个“边框”这些颜色很轻.我尝试了以下的东西,但它是非常有限的,它实际上仅限于白色,它不会捕获像#ddd,#eea …等 这是我的循环: foreach($colors as $color) {
我正在开展一个动态商店项目,我使用循环来打印产品的所有颜色选项作为颜色框,但我真的需要添加一个“边框”这些颜色很轻.我尝试了以下的东西,但它是非常有限的,它实际上仅限于白色,它不会捕获像#ddd,#eea …等
这是我的循环: foreach($colors as $color) { $color = trim($color); if (!empty($color)) { if (in_array($color,array('white','White','#fff','#FFF','#FFFFFF','#ffffff'))) { $bordercolor = '#bbb'; } else { $bordercolor = $color; } } } 颜色是后端的数组,如:White,#000,#cc0000等.在if / else条件中添加所有异常也是不实际的,任何快速的想法?
将HTML颜色转换为RGB,然后将色彩饱和度Lightnes(HSV)
<?php function HTMLToRGB($htmlCode) { if($htmlCode[0] == '#') $htmlCode = substr($htmlCode,1); if (strlen($htmlCode) == 3) { $htmlCode = $htmlCode[0] . $htmlCode[0] . $htmlCode[1] . $htmlCode[1] . $htmlCode[2] . $htmlCode[2]; } $r = hexdec($htmlCode[0] . $htmlCode[1]); $g = hexdec($htmlCode[2] . $htmlCode[3]); $b = hexdec($htmlCode[4] . $htmlCode[5]); return $b + ($g << 0x8) + ($r << 0x10); } function RGBToHSL($RGB) { $r = 0xFF & ($RGB >> 0x10); $g = 0xFF & ($RGB >> 0x8); $b = 0xFF & $RGB; $r = ((float)$r) / 255.0; $g = ((float)$g) / 255.0; $b = ((float)$b) / 255.0; $maxC = max($r,$g,$b); $minC = min($r,$b); $l = ($maxC + $minC) / 2.0; if($maxC == $minC) { $s = 0; $h = 0; } else { if($l < .5) { $s = ($maxC - $minC) / ($maxC + $minC); } else { $s = ($maxC - $minC) / (2.0 - $maxC - $minC); } if($r == $maxC) $h = ($g - $b) / ($maxC - $minC); if($g == $maxC) $h = 2.0 + ($b - $r) / ($maxC - $minC); if($b == $maxC) $h = 4.0 + ($r - $g) / ($maxC - $minC); $h = $h / 6.0; } $h = (int)round(255.0 * $h); $s = (int)round(255.0 * $s); $l = (int)round(255.0 * $l); return (object) Array('hue' => $h,'saturation' => $s,'lightness' => $l); } $colour = '#F12346'; $rgb = HTMLToRGB($colour); $hsl = RGBToHSL($rgb); var_dump($hsl); 用法: $colour = '#F12346'; $rgb = HTMLToRGB($colour); $hsl = RGBToHSL($rgb); if($hsl->lightness > 200) { // this is light colour! } 资源: > http://www.caperna.org/computing/repository/hsl-rgb-color-conversion-php 演示: > http://codepad.org/X7KV4n4n (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |