Я знаю, что об этом уже спрашивали, но мне нужно немного больше помощи, чем другие ответы на SO.
В настоящее время у меня есть цикл foreach, который перебирает записи в моей БД. Каждая строка содержит уникальный первичный атрибут «id» (1,2,3,4,5 и т. Д.).
В моем цикле мне нужно сгенерировать УНИКАЛЬНОЕ значение RGB для каждой записи на основе ее идентификатора. Полученное значение RGB будет применено к тексту HTML-элемента, привязанного к этой записи. Сгенерированный цвет должен быть уникальным для самой записи (через «id»), поэтому я не использую итератор цикла.
Я уже создал рабочую функцию, чтобы сделать это для меня, но мне нужно еще кое-что - мне нужно, чтобы значение rgb имело контрастность выше 4: 5: 1 на белом фоне. У меня есть функция, которая генерирует слишком яркие цвета, что затрудняет чтение текста. Как я могу изменить свою функцию, чтобы получить более темные цвета, которые хорошо контрастируют на белом фоне?
function makeRgbFromValue(int $value){
$hash = md5($value);
return implode(", ", [
hexdec(substr($hash, 0, 2)), // r
hexdec(substr($hash, 2, 2)), // g
hexdec(substr($hash, 4, 2)) // b
]);
}
// Example output: "100, 201, 20"
// My html, using Laravel Blade syntax:
@foreach($categories as $cat)
<a
href="/blog/channels/{{ $cat->slug }}"
style="color: rgb(
{{ makeRgbFromValue($cat->id) }}
)"
>
{{ $cat->name }}
</a>
@endforeach
Может быть, это невозможно ... но я надеюсь, что один из вас, математические гении, может мне помочь:)