我想將字符串表示爲任意的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