Javascript 从像素';获取rgb值(0..255);s十六进制

Javascript 从像素';获取rgb值(0..255);s十六进制,javascript,hex,Javascript,Hex,假设我有0x757575,它是一个十六进制的像素值,每个像素包含8位红色、绿色和蓝色,那么如何在javascript中分别提取红色、绿色和蓝色的值 var pixel = 0x757575; // do i need to split it up into two character each [75,75,75] // if i do as above, did it already become decimal 我的用例是,我已经从数组容器中的图像中获得了像素列表[757575,0808

假设我有
0x757575
,它是一个十六进制的像素值,每个像素包含8位红色、绿色和蓝色,那么如何在javascript中分别提取红色、绿色和蓝色的值

var pixel = 0x757575;
// do i need to split it up into two character each [75,75,75]
// if i do as above, did it already become decimal 

我的用例是,我已经从数组容器中的图像中获得了像素列表
[757575,080808,…]
,我想使用画布api中的
putImageData
方法在画布容器中创建/渲染图像。

您可以使用以下函数将十六进制转换为rgb-

function hexToRgb(hex) {
    var 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;
}

hexToRgb(“#757575”).r
输出
117
您可以使用以下功能将十六进制转换为rgb-

function hexToRgb(hex) {
    var 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;
}
hexToRgb(“#757575”).r
输出
117

一些位数学

var像素=0x757575;
变量红色=(像素&0xFF0000)>>16;
绿色变量=(像素&0x00FF00)>>8;
变量蓝色=(像素和0x0000FF);
警报(红色+”、“+绿色+”、“+蓝色)一些位数学

var像素=0x757575;
变量红色=(像素&0xFF0000)>>16;
绿色变量=(像素&0x00FF00)>>8;
变量蓝色=(像素和0x0000FF);
警报(红色+”、“+绿色+”、“+蓝色)使用以下命令:

      function hex2Rgb(hex) {
      var toInt = parseInt(hex, 16);
      var r = (toInt >> 16) & 255;
      var g = (toInt >> 8) & 255;
      var b = toInt & 255;

      return `rgb(${r},${g},${b})`;
  }

  var rgb = hex2Rgb('0x757575');

使用以下方法:

      function hex2Rgb(hex) {
      var toInt = parseInt(hex, 16);
      var r = (toInt >> 16) & 255;
      var g = (toInt >> 8) & 255;
      var b = toInt & 255;

      return `rgb(${r},${g},${b})`;
  }

  var rgb = hex2Rgb('0x757575');

我无法将字符串作为参数传递给hexToRgb。我无法将字符串作为参数传递给hexToRgb!。。你能解释一下为什么是16位吗?在十六进制中,每个数字包含四位。我们有四个数字(零)要移位,所以4位乘以4位=16位。类似地,当有2个零要移位时,也就是8位。啊哈,明白了。谢谢你,詹姆斯。需要深入了解这一点!。。你能解释一下为什么是16位吗?在十六进制中,每个数字包含四位。我们有四个数字(零)要移位,所以4位乘以4位=16位。类似地,当有2个零要移位时,也就是8位。啊哈,明白了。谢谢你,詹姆斯。需要深入了解这项工作,你能解释一下我的理解吗?b将a移到右边,然后将最后2个字节移到右边。因此,16/8/0行中的每一行都会给出r/g/bOk的相关字节。明白了,谢谢Yuvals的回答。感谢您,将为我从nowWorks完美地制作一个参考,您能解释一下我的lil位,以便我理解
a>>b
a
移到右侧
b
位,并且
&255
掩码将移到最后2个字节。因此,16/8/0行中的每一行都会给出r/g/bOk的相关字节。明白了,谢谢Yuvals的回答。非常感谢,从现在起我将为您做一个参考