On me donne un tableau byte [] en Java qui contient les octets d'une image, et j'ai besoin de le sortir dans une image. Comment ferais-je cela?Byte Array to Image object
Une grande partie grâce
On me donne un tableau byte [] en Java qui contient les octets d'une image, et j'ai besoin de le sortir dans une image. Comment ferais-je cela?Byte Array to Image object
Une grande partie grâce
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
Selon les docs Java, il semble que vous devez utiliser the MemoryImageSource Class pour mettre votre tableau d'octets dans un objet en mémoire, puis utilisez Component.createImage (ImageProducer) suivant (en passant dans votre MemoryImageSource , qui implémente ImageProducer).
Comme il semble que vous savez déjà quel format l'octet [] tableau est en (par exemple RVB, ARVB, BGR, etc.), vous pourriez être en mesure d'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 byte [] en int [], float [] ou double [] selon le format de l'image.
Si vous connaissez le type d'image et que vous voulez seulement pour générer un fichier, il n'y a pas besoin d'obtenir une instance 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);
Cela ne répond pas à la question, la question était d'écrire dans un fichier image. Cette réponse est pour lire à partir d'un fichier image. Qu'est-ce que c'est avec tous les votes? – Sixtoo
Le titre dit cela, mais la question dit qu'ils ont un tableau d'octets et ont besoin d'une image, c'est ce que cela fait. –