16

次のように、32ビット整数をrgba値に変換できます。

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

しかし、私はそれを逆にする方法を本当に知りません。

4

1 に答える 1

17

逆にするには、バイトを整数に結合するだけです。左シフトを使用してそれらを追加するだけで機能します。

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

または、より安全にするために、最初にそれぞれに 0xFF の AND を付けることができます。

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 を使用+しても、結果は同じになります)。

于 2013-07-30T11:41:29.980 に答える