2012-02-15 22 views
1

KinectからKinectをキャプチャしたのは、OpenKinectとJava JNAラッパーです。 RGBデータのbyte []を表示/保存できるイメージに変換するために使用できる既存のライブラリがあるかどうか疑問に思っていますか?RGBデータのbyte []を画像に変換する

+2

可能な重複 - http://stackoverflow.com/questions/1143293/how-to-convert-array-of-bytes-into-image-in-java-se – mre

答えて

2

JavaのBufferedImageは、素晴らしい候補者ですです。

私はあなたのbyte[]の色符号化方式を見つけるとsetRGB()javadocBufferedImageのRGB配列を設定するための許容int[]にそれを変換します。次に、イメージをさまざまな形式でディスクに保存したり、表示用にレンダリングしたりできます。

1

は、各intはARGBピクセル(アルファ、赤、緑、青)をコードint[]byte[]にRGBデータを変換することができます。

public void paint(Graphics graphics){ 
    Graphics2D g = (Graphics2D)graphics; 
    g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null); 
} 
:JComponentの塗装方法で

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

または、例えば画像を描画:そして、あなたはその後、画像を保存するためのImageIOを使用することができた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); 

を作成するには、次のコードを使用します

詳細については、関連するJavaDocを参照してください。 BufferedImage.TYPE_INT_ARGBは、アルファをまったく使用しなくても、通常は最速の画像エンコーディングです(少なくともMac OS XとWindowsではそれ以前のものです)。

免責事項:コード例はテストされていません。

関連する問題