【问题标题】:Converting rgba values into one integer in Javascript在Javascript中将rgba值转换为一个整数
【发布时间】:2013-07-30 12:54:25
【问题描述】:

我已经可以将 32 位整数转换为它们的 rgba 值,如下所示:

pixelData[i] = {
        red: pixelValue >> 24 & 0xFF,
        green: pixelValue >> 16 & 0xFF,
        blue: pixelValue >> 8 & 0xFF,
        alpha: pixelValue & 0xFF
    };

但我真的不知道如何扭转它。

【问题讨论】:

    标签: javascript bit-manipulation boolean-logic


    【解决方案1】:

    要反转它,您只需将字节组合成一个整数。 只需使用左移并添加它们,它就会起作用。

    var rgb = (red << 24) + (green << 16) + (blue << 8) + (alpha);
    

    或者,为了更安全,您可以先将它们中的每一个与 0xFF 相加:

    var r = red & 0xFF;
    var g = green & 0xFF;
    var b = blue & 0xFF;
    var a = alpha & 0xFF;
    
    var rgb = (r << 24) + (g << 16) + (b << 8) + (a);
    

    (您可以在这里使用按位 OR | 而不是 +,结果将是相同的)。

    【讨论】:

    • 确实有效。我认为不是因为输入值与输出值不同。仍然不是。不知道那里存储了哪些额外的位,但我想它们并不重要。
    • 请记住,这不适用于 r/g/b/a 作为整数。在将它们加在一起之前,必须将它们显式转换为字节。
    • JS按位运算符获取并返回32位有符号整数,所以255
    • 可以使用&gt;&gt;&gt; 0获取有符号整数,即:255 &lt;&lt; 24 &gt;&gt;&gt; 0 = 4278190080
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多