2013-07-30 27 views
9

一個整數,我已經可以轉換32位整數到他們的RGBA值是這樣的:轉換RGBA值到在Javascript

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

但我真的不知道該如何扭轉這種局面。

回答

11

要反轉它,你只需要將字節組合成一個整數。 只需使用左移並添加它們,它就可以工作。

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 |代替+這裏,結果將是相同的)。

+0

確實有效。我認爲這不是因爲輸入值與輸出值不一樣。仍然不是。不知道那裏存儲了多少位,但我想他們並不重要。 – skerit

+0

請記住,這不適用於r/g/b/a是整數。在將它們添加到一起之前,必須將它們明確地轉換爲字節。 – lunatix