Objet Byte Array to Image

On me donne un tableau d’octets [] en Java qui contient les octets d’une image et je dois le sortir dans une image. Comment pourrais-je y aller?

Merci beaucoup

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

Si vous connaissez le type d’image et que vous souhaitez uniquement générer un fichier, il n’est pas nécessaire d’obtenir une instance de BufferedImage. Il suffit d’écrire les octets dans un fichier avec l’extension correcte.

 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); 

Selon les documents Java, il semble que vous deviez utiliser la classe MemoryImageSource pour placer votre tableau d’octets dans un object en mémoire, puis utiliser Component.createImage (ImageProducer) ensuite (en transmettant votre MemoryImageSource, qui implémente ImageProducer).

Comme il semble que vous connaissiez déjà le format du tableau d’octets (par exemple, RVB, ARGB, BGR, etc.), vous pouvez utiliser BufferedImage.setRGB (…) ou une combinaison de BufferedImage.getRaster (). et WritableRaster.setPixels (…) ou WritableRaster.setSamples (…) . Malheureusement, ces deux méthodes nécessitent que vous transformiez votre octet [] en int [], float [] ou double [] en fonction du format de l’image.