La réponse se trouve dans le didacticiel de la documentation Java pour l'écriture / l'enregistrement d'une image .
La Image I/O
classe fournit la méthode suivante pour enregistrer une image:
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
Le tutoriel explique que
La classe BufferedImage implémente l'interface RenderedImage.
il peut donc être utilisé dans la méthode.
Par exemple,
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
Il est important d'entourer l' write
appel avec un bloc try car, selon l'API , la méthode lève un IOException
"si une erreur se produit pendant l'écriture"
Les objectifs, les paramètres, les retours et les lancers de la méthode sont également expliqués plus en détail:
Écrit une image à l'aide d'un ImageWriter arbitraire qui prend en charge le format donné dans un fichier. S'il existe déjà un fichier, son contenu est ignoré.
Paramètres:
im - un RenderedImage à écrire.
formatName - une chaîne contenant le nom informel du format.
sortie - un fichier dans lequel écrire.
Retour:
false si aucun écrivain approprié n'est trouvé.
Jette:
IllegalArgumentException - si un paramètre est nul.
IOException - si une erreur se produit pendant l'écriture.
Cependant, cela formatName
peut encore sembler assez vague et ambigu; le tutoriel clarifie un peu les choses:
La méthode ImageIO.write appelle le code qui implémente PNG en écrivant un «plug-in d'écriture PNG». Le terme plug-in est utilisé car les E / S d'image sont extensibles et peuvent prendre en charge un large éventail de formats.
Mais les plugins de format d'image standard suivants: JPEG, PNG, GIF, BMP et WBMP sont toujours présents.
Pour la plupart des applications, il suffit d'utiliser l'un de ces plugins standard. Ils ont l'avantage d'être facilement disponibles.
Il existe cependant d'autres formats que vous pouvez utiliser:
La classe Image I / O fournit un moyen de connecter la prise en charge de formats supplémentaires pouvant être utilisés, et de nombreux plug-ins de ce type existent. Si vous êtes intéressé par les formats de fichiers disponibles pour charger ou enregistrer dans votre système, vous pouvez utiliser les méthodes getReaderFormatNames et getWriterFormatNames de la classe ImageIO. Ces méthodes renvoient un tableau de chaînes répertoriant tous les formats pris en charge dans ce JRE.
String writerNames[] = ImageIO.getWriterFormatNames();
Le tableau de noms renvoyé comprendra tous les plug-ins supplémentaires installés et l'un de ces noms peut être utilisé comme nom de format pour sélectionner un graveur d'image.
Pour un exemple complet et pratique, on peut se référer à l' exemple d'Oracle SaveImage.java
.