On me donne un tableau d'octets [] dans Java qui contient les octets d'une image, et je dois le sortir dans une image. Comment pourrais-je faire cela?
Merci beaucoup
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
Si vous connaissez le type d'image et souhaitez uniquement générer un fichier, il n'est pas nécessaire d'obtenir une instance BufferedImage. Écrivez simplement 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);
Comme il semble que vous sachiez déjà dans quel format le tableau d'octets [] est (par exemple RGB, ARGB, BGR, etc.), vous pourriez être en mesure d'utiliser BufferedImage.setRGB (...) , ou un 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 [] selon le format d'image.
Selon les documents Java, il semble que vous devez utiliser la classe MemoryImageSource pour placer votre tableau d'octets dans un objet en mémoire, puis utiliser Component.createImage ( ImageProducer) suivant (en passant votre MemoryImageSource, qui implémente ImageProducer).