以下是将rgb转换为十六进制颜色的功能。但这并不完全正确。使用(0,255,0)(#00ff00)。它返回ff00,因此它不是有效的颜色。我需要帮助来修改它以返回正确的十六进制值。
function rgbToHex(r, g, b) {
var rgb = b | (g << 8) | (r << 16);
return rgb.toString(16);
}
答案 0 :(得分:8)
这个怎么样:
//...
return (0x1000000 | rgb).toString(16).substring(1);
答案 1 :(得分:3)
试试这个:
return ("000000"+rgb.toString(16)).slice(-6);
// ^----returns last 6 chars
答案 2 :(得分:1)
return ((b | g << 8 | r << 16) / 16777216).toString(16).substring(2);
或
return ((b | g << 8 | r << 16) / 0x1000000).toString(16).substring(2);
答案 3 :(得分:0)
免责声明:我是下面提到的pusher.color库的作者。
如果您不介意使用库,可能需要尝试使用pusher.color或xcolor等库。我注意到你已经在Stackoverflow上询问了一些关于Javascript中颜色操作的问题,所以这可以节省你一些时间来使用库来解决你的问题。你想要的pusher.color语法是:
var hexString = pusher.color('rgb', r, g, b).hex6();
答案 4 :(得分:0)
只是另一种选择
function rgbToHex(r, g, b) {
function c(v) {
var hex = v.toString(16);
return hex.length === 1 ? "0" + hex : hex;
}
return "#" + c(r) + c(g) + c(b);
}
答案 5 :(得分:0)
如何使用像the xolor library这样的库:
var color = xolor([45, 100, 200])
color.rgb // "rgb(45,100,200)"
color.hex // "2D64C8"
color.hsl // {h: 219, s:63.3, l:48.0}
color.hsv // {h: 218.7, s:0.7750, v:0.7843}
color.name // "royalblue"
答案 6 :(得分:-2)
这个怎么样:
return $.sprintf("#%02x%02x%02x", r, g, b);
为此你需要使用jQuery。