Преобразовать байт [] данных RGB в изображение - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть байт [], полученный из Kinect с использованием OpenKinect, и это оболочка Java JNA.Мне интересно, есть ли какая-нибудь существующая библиотека, которую я могу использовать для преобразования байта [] данных RGB в изображение, которое я могу отобразить / сохранить?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

Java BufferedImage является отличным кандидатом .

Я бы выяснил схему кодирования цвета вашего byte[] и преобразовал бы ее в int[], приемлемый для установки RGBмассив BufferedImage с setRGB () javadoc .Затем вы можете сохранить изображение на диск в различных форматах или сделать для отображения.

1 голос
/ 15 февраля 2012

Вы можете преобразовать данные 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:

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), даже если вы вообще не используете альфа.

Отказ от ответственности: примеры кода не были проверены.

...