2014-01-21 6 views
0

Я хотел найти способ закодировать программу, которая преобразует любой из rgb, включая числа с отрицательными целыми числами, в шестнадцатеричное число, подобное этому программному обеспечению.Преобразование rgb в hex

http://www.javascripter.net/faq/rgbtohex.htm

У меня есть это уже, но не кажется, что работать с РГБ:

RGB (-5, 231, -17)

function rgb2hex(rgb){ 
rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); 
return (rgb && rgb.length === 4) ? "#" + 
    ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + 
    ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + 
    ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : ''; 
} 

Благодаря любому кто может помочь!

+0

Что именно делает отрицательный компонент RGB означает? –

+0

Возможные дубликаты: http: //stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb –

+0

@JonathonReinhart Просто гадать, но это показатель того, насколько пользователю не нравится этот цвет ? : D –

ответ

0

Попробуйте это,

function colorToHex(color) { 
     if (color.substr(0, 1) === '#') { 
      return color; 
     } 
     var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color); 

     var red = parseInt(digits[2]); 
     var green = parseInt(digits[3]); 
     var blue = parseInt(digits[4]); 

     var rgb = blue | (green << 8) | (red << 16); 
     return digits[1] + '#' + rgb.toString(16); 
    }; 

    colorToHex('rgb(120, 120, 240)'); 

Ref: http://haacked.com/archive/2009/12/29/convert-rgb-to-hex.aspx/

Смежные вопросы