9

ランダムな色を生成したい ID がいくつかあります。ランダムな色にすることは問題ではありませんが、一貫性がなければなりません。

ID を MD5 (またはその他の種類のハッシュ) にできるので、コードは予想される文字数を知ることができますが、最終的には、同じ ID/ハッシュ/文字列に対して同じ (ランダムな) 色を生成する必要があります。

4

3 に答える 3

29

RGB コードに必要なのは、ランダムな文字列から 6 桁の 16 進数値への一貫したマッピングだけです。md5 を 16 進文字列への方法として使用してから、最初の 6 桁を取得してみませんか?

<?php
function rgbcode($id){
    return '#'.substr(md5($id), 0, 6);
}
?>
于 2013-03-29T14:46:55.627 に答える
1

PHP で使用できる RGB 値を作成するために、自分のプロジェクトの 1 つで使用している単純な関数を次に示しますimagecolorallocatealpha

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 ) ) );
于 2017-10-31T05:26:09.143 に答える
0

最初にランダムな文字列を6桁の16進数に変換し、浮動小数点数を削除して文字列を整数にし、それらを16進数の文字列に変換してから、6桁の16進数の前にハッシュを配置します。そのランダムな文字列には色があり、見つけることができます16 進数が 6 桁以上の場合、その数を 2 で割り続けて 5 桁の 16 進数になり、6 桁目が 16 進数の合計を 2 で割った数になります。これがカラー コードです。

于 2013-03-29T13:37:49.570 に答える