簡體   English   中英

將RGB數據的byte []轉換為圖像

[英]Convert byte[] of RGB data to a image

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

Java的BufferedImage是一個不錯的選擇

我會找出您的byte[]的顏色編碼方案,並將其轉換為可以使用setRGB() javadoc設置BufferedImage的RGB數組的int[] 然后,您可以將圖像以各種格式保存到磁盤,或渲染以顯示。

您可以將byte[] RGB數據轉換為int[] ,其中每個int會編碼ARGB像素(alpha,紅色,綠色,藍色)。 然后使用以下代碼創建一個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上是這樣),即使您根本不使用任何Alpha。

免責聲明:代碼示例未經測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM