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