我想将字符串表示为任意的html颜色。如何将字符串转换为html颜色代码散列?
例子:
“等等等等” =#FFCC00
“富富2” =#565656
不要紧实际的颜色代码是什么,只要它是一个有效的十六进制HTML颜色代码和整个频谱都有相当好的表现。
我想第一步是在字符串上做一个MD5,然后以某种方式将其转换为十六进制颜色代码?
更新:使用示例是在服务器上生成文件请求的可视化报告。颜色不一定非常漂亮,更多的是人脑可以更容易地检测数据中的图案等。
我想将字符串表示为任意的html颜色。如何将字符串转换为html颜色代码散列?
例子:
“等等等等” =#FFCC00
“富富2” =#565656
不要紧实际的颜色代码是什么,只要它是一个有效的十六进制HTML颜色代码和整个频谱都有相当好的表现。
我想第一步是在字符串上做一个MD5,然后以某种方式将其转换为十六进制颜色代码?
更新:使用示例是在服务器上生成文件请求的可视化报告。颜色不一定非常漂亮,更多的是人脑可以更容易地检测数据中的图案等。
感谢您的三分球,这似乎做一个称职的工作:
function stringToColorCode($str) {
$code = dechex(crc32($str));
$code = substr($code, 0, 6);
return $code;
}
$str = 'test123';
print '<span style="background-color:#'.stringToColorCode($str).'">'.$str.'</span>';
几乎总是只使用随机颜色将
我会建议创造能很好的颜色(稍长)列表在一起,并您的背景 - 然后只需将字符串和模数(%)的char值与颜色数相加即可得到表格中的索引。
这是最好的答案。您应该包含一个完整的功能。 – Heroselohim 2016-05-01 17:10:15
我同意以上sje397完全随机的颜色可能会最终看起来讨厌。我建议选择恒定的饱和度+发光值,并根据内容改变色调,而不是制作一长串漂亮的颜色。要从HSL颜色获得RGB颜色,可以使用类似于http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB中所述的内容。
下面是一个例子(尝试在http://codepad.viper-7.com一些作品,如https://codepad.remoteinterview.io/ZXBMZWYJFO):
<?php
function hsl2rgb($H, $S, $V) {
$H *= 6;
$h = intval($H);
$H -= $h;
$V *= 255;
$m = $V*(1 - $S);
$x = $V*(1 - $S*(1-$H));
$y = $V*(1 - $S*$H);
$a = [[$V, $x, $m], [$y, $V, $m],
[$m, $V, $x], [$m, $y, $V],
[$x, $m, $V], [$V, $m, $y]][$h];
return sprintf("#%02X%02X%02X", $a[0], $a[1], $a[2]);
}
function hue($tstr) {
return unpack('L', hash('adler32', $tstr, true))[1];
}
$phrase = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
$words = [];
foreach (explode(' ', $phrase) as $word)
$words[hue($word)] = $word;
ksort($words);
foreach ($words as $h => $word) {
$col = hsl2rgb($h/0xFFFFFFFF, 0.4, 1);
printf('<span style="color:%s">%s</span> ', $col, $word);
}
?>
通过代码片段,这将是最好的答案 – iwein 2013-04-20 06:26:32
添加了代码片段。 – Reinderien 2014-05-08 20:42:59
PHP解析错误:语法错误,意外的'['由于旧的PHP版本在$ a之后。 – hozza 2015-03-09 18:26:46
我想我非常了解这个愿望。我想要同样的东西。试图获得代表标题的独特背景颜色。我不想自己预先定义任何东西,我想要为每个标题获得一个可视化的哈希值,但具有很好的性能。找到这个工作做得很好。您可以修改颜色的亮度以及返回的变化。你只需测试一下你感觉舒服的颜色。我认为任何颜色都应该适合这项工作,只是亮度很重要,才能将它与前景区分开来。
https://mrkmg.com/blog/2012/01/13/php-function-to-generate-a-color-from-a-text-string/
给它一个字符串,最低亮度(0-255)和方差(2-10),它会为您的字符串的颜色。这个可以给你漂亮的颜色,如果调整。
链接已损坏:( – Jerry 2018-01-31 13:40:49
一个内胆:
substr(md5($string), 0, 6);
你想映射一个字符串转换为6位十六进制代码? – codaddict 2010-09-16 06:07:27
你可以举一个你将如何使用这些字符串的例子吗?你为什么不把颜色代码放在php变量中? – Mischa 2010-09-16 06:07:48
与codaddict的想法:散列它,并采取前6个字节? – russau 2010-09-16 06:10:42