十六进制和RGB

十六进制(也称为基数 16 或者十六进制)是一种以 16 为基数的位置数字系统。
它使用 16 个不同的符号 0–9 表示值 0 到 9,使用 A–F 表示值 10 到 15.

RGB 颜色是一种加色模型,其中红色、绿色和蓝色相加以再现一系列颜色。
每个参数指定颜色的强度,可以是 0 到 255 之间的整数或者 0% 到 100% 之间的百分比值。

如何将 RGB 转换为十六进制

在本教程中,我们推荐了几种将 RGB 转换为十六进制,或者将十六进制转换为RGB值的方法。

让我们将 RGB 值转换为十六进制值。
rbgtoHex 有两个版本,它们期望 r、g 和 b 的整数值。

以下代码将 RGB 转换为十六进制并添加任何所需的零填充:

function componentToHex(c) {
  let hex = c.toString(16);
  return hex.length == 1 ? "0" + hex : hex;
}
function rgbToHex(r, g, b) {
  return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
console.log(rgbToHex(28, 135, 201)); //#1c89c9

这是上述方法的替代方法:

function rgbToHex(r, g, b) {
  return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
console.log(rgbToHex(28, 135, 201)); //#1c87c9

现在让我们将十六进制转换为 RGB:

function hexToRgb(hex) {
  let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result ? {
    r: parseInt(result[1], 16),
    g: parseInt(result[2], 16),
    b: parseInt(result[3], 16)
  } : null;
}
console.log(hexToRgb("#1c87c9").b); //201

还有另一个版本的 hexToRgb() 也解析速记十六进制三元组:

function hexToRgb(hex) {
  let shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  hex = hex.replace(shorthandRegex, function (m, r, g, b) {
    return r + r + g + g + b + b;
  });
  let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result ? {
    r: parseInt(result[1], 16),
    g: parseInt(result[2], 16),
    b: parseInt(result[3], 16)
  } : null;
}
console.log(hexToRgb("#0044ff").g);
console.log(hexToRgb("#04f").g);
日期:2020-06-02 22:16:13 来源:oir作者:oir