2012-05-20 64 views
1

據我所知,每個像素用4個字節表示(a,r,g,b)。如何將它存儲在byte []數組中,其中size是圖像中像素的數量。Android Camera Byte []數據,它如何存儲32位像素?

下面的代碼按預期工作(旋轉圖像)

rotatedData = new byte[data.length]; 
for (int y = 0; y < height; y++) { 
    for (int x = 0; x < width; x++) 
     rotatedData[x * height + height - y - 1] = data[x + y * width]; 
} 
data = rotatedData; 
int tmp = width; // Here we are swapping, that's the difference to #11 
width = height; 
height = tmp; 
+0

您確定它是32b數據嗎?存儲符合你的描述的同樣有效的方法是「一個字節= 0xaarrggbb」或類似的。 –

+0

如何以2位存儲數字0-255? – Arjun

+0

你沒有;這是我的問題。你確定*你所擁有的是每像素32B的彩色數據值?即使捕獲的數據是32b,訪問該數據的任何特定函數的返回值也不一定需要返回那麼多的細節。一個返回一個'Byte []'的函數可以像我提到的那樣使用一個方案。我根本不瞭解Android,但我確實知道在8b中不能存儲32b。 –

回答

0

如果你在談論解碼攝像頭預覽圖像的「NV21」的表示,即由包含亮度的一個字節塊每個像素數據,然後是另一個包含每個2×2像素塊具有一個樣本的彩色數據的塊。顏色數據的分辨率低於亮度,因爲人眼對顏色細節不太敏感。

有關將此格式解碼爲常規Android位圖格式ARGB像素的示例代碼,請參見DecodeNV21例程here

相關問題