나는 데이터베이스에서 오는 ID를 가지고 있으므로 (그래서 1, 100, 1000, ...이 될 수 있음) 나는 동등한 ID가 결과를 가져야하지만 임의의 색상을 생성해야합니다. 같은 색으로.PHP는 RGB를 생성
내가 어떻게이 목표를 달성 할 수 있을지에 대한 제안이 있으십니까?
감사합니다.
나는 데이터베이스에서 오는 ID를 가지고 있으므로 (그래서 1, 100, 1000, ...이 될 수 있음) 나는 동등한 ID가 결과를 가져야하지만 임의의 색상을 생성해야합니다. 같은 색으로.PHP는 RGB를 생성
내가 어떻게이 목표를 달성 할 수 있을지에 대한 제안이 있으십니까?
감사합니다.
필요하지 않은 암호 해시를 사용하고 바이트 클립 :
function getColor($num) {
$hash = md5('color' . $num); // modify 'color' to get a different palette
return array(
hexdec(substr($hash, 0, 2)), // r
hexdec(substr($hash, 2, 2)), // g
hexdec(substr($hash, 4, 2))); //b
}
결과 (code to generate it) 숫자 0-20에 대해 다음과 같습니다
분명한 방법은 ID를 색상으로 변환하는 것입니다 (예 : 하위 8 비트는 파란색, 다음 8 비트는 녹색, 다음 8은 빨간색입니다. 8 비트는 그대로 두십시오). ;-)
당신이 끔찍한 컬러 팔레트와 끝까지 왜냐하면이 (작동하지 않는 가정 :. 색상에 ID의 매핑을 할 를 사용하여 배열 (또는 해시 테이블)
당신이 염려되는 경우 ID가 너무 많으면 ID에 해시를 적용하고 "id to color"매핑을 입력 할 때 사용할 수 있습니다.이 경우에는 id가 항상 하나의 색상을 갖지만 하나의 색상은 많은 ID에서 사용됩니다.
<?php
// someting like this?
$randomString = md5($your_id_here); // like "d73a6ef90dc6a ..."
$r = substr($randomString,0,2); //1. and 2.
$g = substr($randomString,2,2); //3. and 4.
$b = substr($randomString,4,2); //5. and 6.
?>
<style>
#topbar { border-bottom:4px solid #<?php echo $r.$g.$b; ?>; }
</style>
배열이 항상 정렬되는 경우이 항목을 최대 250 개의 항목까지 사용할 수 있습니다.
<?php
function getRGBColorString($array)
{
$indexColor = round(250/count($array));
$iterator = 1;
$arrayOfRGB = array();
foreach($array as $item)
{
$arrayOfRGB[] = "rgb(" . ($indexColor * $iterator) . ", 113, 113)";
$iterator++;
}
return $arrayOfRGB;
}
?>
지금까지 작성된 코드 (또는 의사 코드)가 있습니까? – summea
비트 분할은 어떨까요? Bit0-> R의 Bit7, G의 Bit1-> Bit7, B의 Bit2-> Bit7, R의 Bit3> Bit6 ... 이것은 복잡한 반면, ID 공간이없는 한 매우 다른 색상을 제공합니다. 너무 큰. –