2012-02-15 82 views
1

我有一個字節[],我使用OpenKinect從Kinect中捕獲,它是Java JNA包裝。我想知道是否有任何現有的庫可用於將RGB數據的byte []轉換爲可以顯示/存儲的圖像?將RGB數據的byte []轉換爲圖像

+2

可能的重複 - http://stackoverflow.com/questions/1143293/how-to-convert-array-of-bytes-into-image-in-java-se – mre 2012-02-15 18:43:17

回答

2

爪哇的BufferedImage是一個很好的候選

我會找到你的byte[]的顏色編碼方案,並將其轉換爲一個int[]接受的設置BufferedImage的RGB陣列setRGB()javadoc。然後,您可以將圖像以各種格式保存到磁盤,或者渲染以供顯示。

1

可以將byte[] RGB數據轉換成int[]其中每個INT編碼ARGB像素(α,紅,綠,藍)。然後使用下面的代碼創建一個BufferedImage

int[] pixels = new int[width * height]; 
// do the conversion byte[] => int[] 
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
img.setRGB(0, 0, width, height, pixels, 0, width); 

然後可以使用ImageIO的保存圖像:

File outputFile = new File("image.png"); 
ImageIO.write(img, "png", outputFile); 

或繪製例如圖像中的一個JComponent的paint方法:

public void paint(Graphics graphics){ 
    Graphics2D g = (Graphics2D)graphics; 
    g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null); 
} 

有關詳細信息,請參閱相關的JavaDoc。即使您根本不使用任何字母,BufferedImage.TYPE_INT_ARGB通常是最快的圖像編碼(至少在Mac OS X和Windows上是前一陣子)。

聲明:代碼示例尚未經過測試。