2015-10-06 12 views

Trả lời

0

Bạn có thể thử này

function rgb2html($r, $g=-1, $b=-1) 
{ 
    if (is_array($r) && sizeof($r) == 3) 
     list($r, $g, $b) = $r; 

    $r = intval($r); $g = intval($g); 
    $b = intval($b); 

    $r = dechex($r<0?0:($r>255?255:$r)); 
    $g = dechex($g<0?0:($g>255?255:$g)); 
    $b = dechex($b<0?0:($b>255?255:$b)); 

    $color = (strlen($r) < 2?'0':'').$r; 
    $color .= (strlen($g) < 2?'0':'').$g; 
    $color .= (strlen($b) < 2?'0':'').$b; 
    return '#'.$color; 
} 
3

Bạn có thể sử dụng chức năng sau

function fromRGB($R, $G, $B) 
{ 

    $R = dechex($R); 
    if (strlen($R)<2) 
    $R = '0'.$R; 

    $G = dechex($G); 
    if (strlen($G)<2) 
    $G = '0'.$G; 

    $B = dechex($B); 
    if (strlen($B)<2) 
    $B = '0'.$B; 

    return '#' . $R . $G . $B; 
} 

Sau đó, echo fromRGB(115,25,190); sẽ in # 7319be

Nguồn: RGB to hex colors and hex colors to RGB - PHP

35

Một đơn giản sprintf sẽ làm.

$color = sprintf("#%02x%02x%02x", 13, 0, 255); // #0d00ff 

Để phá vỡ các định dạng:

  • # - các ký tự chữ #
  • % - khởi đầu của đặc điểm kỹ thuật chuyển đổi
  • 0 - nhân vật được sử dụng để đệm
  • 2 - số lượng ký tự tối thiểu mà chuyển đổi sẽ được tạo thành, được đệm với số ở trên nếu cần
  • x - đối số được coi là một số nguyên và được trình bày như một số thập lục phân với chữ thường
  • %02x%02x - trên Bốn lặp đi lặp lại hai lần nữa
+2

Làm thế nào thanh lịch! Làm tốt! – Michael

3

Bạn có thể thử mảnh này mã đơn giản dưới đây. Bạn có thể chuyển mã rgb động cũng như trong mã.

$rgb = (123,222,132); 
$rgbarr = explode(",",$rgb,3); 
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]); 

này mã trở lại di chúc như # 7bde84

+0

Dòng đầu tiên của mã có vẻ sai, điều này có nghĩa là một mảng hoặc bạn đã quên tên hàm "rgb" chưa? – donquixote

+0

Đó là một mảng. Làm việc thực sự tốt cho tôi, vì vậy tôi đã không tìm thấy bất cứ điều gì sai trái với nó. – TESTasy

+0

Mảng có dấu ngoặc tròn trong PHP? https://3v4l.org/19C2v – donquixote

Các vấn đề liên quan