2010-12-08 3 views
1

J'ai un travail scolaire où j'ai besoin d'enregistrer une image arbitraire sur le disque avec d'autres données, dans un seul fichier.En utilisant Java, quel est le meilleur moyen de sauvegarder une image dans un fichier?

Nous avons pensé à le sérialiser, avec les données; Cependant, les images, même BufferedImage, ne peuvent pas être sérialisées.

Quel est le meilleur moyen le plus simple pour enregistrer une image avec d'autres données dans un seul fichier, en utilisant Java? Honnêtement, je ne me soucie pas vraiment de la taille du fichier. Cependant, si c'est compressé, je suppose que c'est un plus.

Répondre

5
ImageIO.write(img, "BMP", new File("filename.bmp")); 

où img est votre BufferedImage. Après cela, vous pouvez ouvrir le fichier avec FileOutputStream et écrire des données après ou après. En lisant, il vous suffit de couper les données ajoutées et de traiter le reste comme votre image.

+0

Et comment puis-je ajouter des données arbitraires à ce fichier et toujours le lire avec une relative facilité? – zneak

+0

voir la réponse mise à jour. –

+0

L'OP a écrit * "Honnêtement, je ne me soucie pas vraiment de la taille du fichier, même si, s'il est compressé, je suppose que c'est un plus" *. BMP? Vraiment? Faites-en * .png * :) – SyntaxT3rr0r

3

Si vous voulez une solution "lisible", comme en stock dans un fichier texte, vous pouvez encoder l'image en tant que chaîne base64 et la stocker dans votre fichier. Il existe un few options in this question pour Java, par exemple celui de apache commons.

Si vous obtenez le byte[] comme illustré dans les autres réponses que vous pouvez obtenir une chaîne en faisant

String imageString = new Base64().encodeBase64String(imageBytes); 

et obtenir le tableau d'octets de retour avec

byte[] imageBytes = new Base64().decodeBase64(imageString); 
Questions connexes