RGB в Hex и Hex в RGB - PullRequest
       207

RGB в Hex и Hex в RGB

454 голосов
/ 11 апреля 2011

Как преобразовать цвета в формате RGB в шестнадцатеричный формат и наоборот?

Например, преобразовать '#0080C0' в (0, 128, 192).

Ответы [ 43 ]

0 голосов
/ 02 декабря 2015

Я взбил это для использования с lodash . Он преобразует строку RGB, такую ​​как "30,209,19", в соответствующую шестнадцатеричную строку "#1ed113":

var rgb = '30,209,19';

var hex = _.reduce(rgb.split(','), function(hexAccumulator, rgbValue) {
    var intColor = _.parseInt(rgbValue);

    if (_.isNaN(intColor)) {
        throw new Error('The value ' + rgbValue + ' was not able to be converted to int');
    }

    // Ensure a value such as 2 is converted to "02".
    var hexColor = _.padLeft(intColor.toString(16), 2, '0');

    return hexAccumulator + hexColor;
}, '#');
0 голосов
/ 10 ноября 2013

Чистая версия вышеупомянутого coffeescript (спасибо @TimDown):

rgbToHex = (rgb) ->
    a = rgb.match /\d+/g
    rgb  unless a.length is 3
    "##{ ((1 << 24) + (parseInt(a[0]) << 16) + (parseInt(a[1]) << 8) + parseInt(a[2])).toString(16).slice(1) }"
0 голосов
/ 28 июня 2015

На случай, если это кому-нибудь поможет, в моем API есть функции для этих преобразований.

...