1. PHP / Говнокод #1439

    +148.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function rgb_to_htmlcolor($rgb) {
        $red = $rgb['red'];
        $green = $rgb['green'];
        $blue = $rgb['blue'];
        $red = 0x10000 * max(0,min(255,$red+0));
        $green = 0x100 * max(0,min(255,$green+0));
        $blue = max(0,min(255,$blue+0));
        // convert the combined value to hex and zero-fill to 6 digits
        return "#".str_pad(strtoupper(dechex($red + $green + $blue)),6,"0",STR_PAD_LEFT);
    }

    Преобразование RGB в #RRGGBB
    Чувак не ведает что есть sprintf('#%02X%02X%02X')

    Запостил: guest, 29 Июля 2009

    Комментарии (5) RSS

    • а автор не ведает что есть hexdec
      Ответить
    • Говногость 2:
      а как с помощью hexdec превратить
      array('red' => 12, 'green' => 250, 'blue' => '7') в #RRGGBB ?
      Ответить
      • я не говногость2, но предложу свое решение:

        $hex = dechex($red + 256 * $green + 65536 * $blue);

        единственное, если значения любого цвета будет меньше 0xF, надо 0 впереди дописывать
        Ответить
    • А чьорт убейте меня! Я почти также делал, только чуток посложнее. =)
      Ответить
    • sprintf не эквивалентен указанному коду из-за функций max()...

      Хотя, конечно, вот это совсем некрасиво: "str_pad(strtoupper(dechex(...)), ...)". Не спорю.
      Ответить

    Добавить комментарий