Изменяйте случайные строки в цвета, последовательно

У меня есть несколько идентификаторов, для которых я хочу генерировать случайные цвета. Изготовление случайных цветов не проблема, но она должна быть последовательной.

Я мог бы использовать MD5 (или какой-либо другой хэш) идентификаторы, чтобы код мог знать, сколько символов ожидать, но в нижней строке он должен генерировать одинаковый (случайный) цвет для одного и того же ID / хэша / строки.

Все, что вам нужно для кода RGB, – это согласованное отображение из вашей случайной строки в шестнадцатеричное значение из шести позиций. Почему бы не использовать md5 как путь к шестнадцатеричной строке, а затем взять первые 6 цифр?

<?php function rgbcode($id){ return '#'.substr(md5($id), 0, 6); } ?> 

сначала преобразовать случайную строку в шестнадцатеричное число с шестью цифрами и удалить поплавки и сделать строку целым числом и преобразовать их в шестнадцатеричную строку, а затем поставить хэш до шестизначного шестнадцатеричного числа и цвет для этой случайной строки, и вы можете найти шестнадцатеричное число должно быть больше шестизначного числа, если да, продолжайте делить это число на 2, пока оно не станет пятизначным шестнадцатеричным числом, а шестое число будет числом времени, в котором общее шестнадцатеричное число делится на 2, есть ваш цветовой код.

Вот простая функция, которую я использую в одном из моих собственных проектов для создания значений RGB, которые я могу использовать с imagecolorallocatealpha PHP:

 function randomRgbGeneratorFromId( $id = null ) { $md5 = md5( $id ); $md5 = preg_replace( '/[^0-9a-fA-F]/', '', $md5 ); $color = substr( $md5, 0, 6 ); $hex = str_split( $color, 1 ); $rgbd = array_map( 'hexdec', $hex ); $rgba = array( ( $rgbd[0] * $rgbd[1] ), ( $rgbd[2] * $rgbd[3] ), ( $rgbd[4] * $rgbd[5] ), ); return $rgba; } 

Конечно, вы всегда можете выводить на свой CSS / HTML, используя что-то вроде этого:

  echo sprintf( 'rgb(%s)', implode( ',', randomRgbGeneratorFromId( $id ) ) );