La respuesta se encuentra en el Tutorial de documentación de Java para escribir / guardar una imagen .
La Image I/O
clase proporciona el siguiente método para guardar una imagen:
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
El tutorial explica que
La clase BufferedImage implementa la interfaz RenderedImage.
entonces puede ser usado en el método.
Por ejemplo,
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
Es importante rodear la write
llamada con un bloque de prueba porque, según la API , el método arroja un IOException
"si ocurre un error durante la escritura"
También se explican el objetivo del método, los parámetros, los retornos y los lanzamientos, con más detalle:
Escribe una imagen usando un ImageWriter arbitrario que admite el formato dado a un archivo. Si ya hay un archivo presente, su contenido se descarta.
Parámetros:
im: una imagen renderizada que se escribirá.
formatName: una cadena que contiene el nombre informal del formato.
salida - un archivo para ser escrito.
Devoluciones:
falso si no se encuentra un escritor apropiado.
Lanza
IllegalArgumentException: si algún parámetro es nulo.
IOException: si se produce un error durante la escritura.
Sin embargo, formatName
aún puede parecer bastante vago y ambiguo; el tutorial lo aclara un poco:
El método ImageIO.write llama al código que implementa PNG escribiendo un "complemento de escritor PNG". El término complemento se utiliza ya que Image I / O es extensible y puede admitir una amplia gama de formatos.
Pero los siguientes complementos de formato de imagen estándar: JPEG, PNG, GIF, BMP y WBMP siempre están presentes.
Para la mayoría de las aplicaciones es suficiente usar uno de estos complementos estándar. Tienen la ventaja de estar fácilmente disponibles.
Sin embargo, hay formatos adicionales que puede usar:
La clase Image I / O proporciona una forma de conectar el soporte para formatos adicionales que se pueden usar, y existen muchos de estos complementos. Si está interesado en qué formatos de archivo están disponibles para cargar o guardar en su sistema, puede usar los métodos getReaderFormatNames y getWriterFormatNames de la clase ImageIO. Estos métodos devuelven una serie de cadenas que enumeran todos los formatos admitidos en este JRE.
String writerNames[] = ImageIO.getWriterFormatNames();
El conjunto de nombres devuelto incluirá cualquier complemento adicional que esté instalado y cualquiera de estos nombres se puede usar como un nombre de formato para seleccionar un escritor de imágenes.
Para un ejemplo completo y práctico, uno puede consultar el ejemplo de Oracle SaveImage.java
.