Tôi đang đối mặt với tình huống này khi tôi có ID đến từ cơ sở dữ liệu (vì vậy nó có thể là 1, 100, 1000, ...) và tôi cần tạo ra các màu ngẫu nhiên, cùng màu.PHP tạo RGB
Bất kỳ đề xuất nào về cách tôi có thể đạt được điều này?
Cảm ơn!
Tôi đang đối mặt với tình huống này khi tôi có ID đến từ cơ sở dữ liệu (vì vậy nó có thể là 1, 100, 1000, ...) và tôi cần tạo ra các màu ngẫu nhiên, cùng màu.PHP tạo RGB
Bất kỳ đề xuất nào về cách tôi có thể đạt được điều này?
Cảm ơn!
Sử dụng một băm mật mã và clip các byte bạn không cần:
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
}
Các kết quả (code to generate it) trông như thế này cho các con số 0-20:
Giả sử này không làm việc (cos bạn kết thúc với một bảng màu khủng khiếp:. Sử dụng một mảng (hoặc bảng băm) để thực hiện một bản đồ của ID vào màu
Nếu bạn đang quan tâm rằng có quá nhiều ID, khi đó bạn có thể áp dụng một số băm cho ID và sử dụng nó khi bạn nhập vào ánh xạ "id to color". Trong trường hợp này, bạn có thể nói một id luôn có một màu, nhưng một màu có thể được nhiều ID khác sử dụng.
<?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>
Nếu mảng luôn được sắp xếp, bạn có thể sử dụng algorythm này tối đa 250 mục:
<?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;
}
?>
Bạn có bất kỳ mã (hoặc mã giả) nào được viết cho đến thời điểm này không? – summea
Điều gì về chia tách bit? Bit0-> Bit7 của R, Bit1-> Bit7 của G, Bit2-> Bit7 của B, Bit3-> Bit6 của R, ... trong khi điều này phức tạp, nó cho màu sắc rất khác nhau, miễn là không gian ID không quá lớn. –