Objeto Byte Array to Image

Me dieron una matriz de bytes [] en Java que contiene los bytes de una imagen, y tengo que mostrarla en una imagen. ¿Cómo voy a hacer esto?

Muchas gracias

BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes)); 

Si conoce el tipo de imagen y solo desea generar un archivo, no es necesario obtener una instancia de BufferedImage. Simplemente escriba los bytes en un archivo con la extensión correcta.

 OutputStream out = null; try { out = new BufferedOutputStream(new FileOutputStream(path)); out.write(bytes); } finally { if (out != null) out.close(); } 
 From Database. Blob blob = resultSet.getBlob("pictureBlob"); byte [] data = blob.getBytes( 1, ( int ) blob.length() ); BufferedImage img = null; try { img = ImageIO.read(new ByteArrayInputStream(data)); } catch (IOException e) { e.printStackTrace(); } drawPicture(img); // void drawPicture(Image img); 

De acuerdo con los documentos de Java, parece que necesita usar la Clase MemoryImageSource para poner su matriz de bytes en un objeto en la memoria, y luego usar Component.createImage (ImageProducer) a continuación (pasando MemoryImageSource, que implementa ImageProducer).

Como parece que ya sabe en qué formato está la matriz de bytes [] (por ejemplo, RGB, ARGB, BGR, etc.), es posible que pueda usar BufferedImage.setRGB (…) o una combinación de BufferedImage.getRaster () y WritableRaster.setPixels (…) o WritableRaster.setSamples (…) . Desafortunadamente, ambos métodos requieren que transforme su byte [] en uno de int [], float [] o double [] según el formato de la imagen.