La respuesta se encuentra en la Documentación de Java Tutorial for Writing/Saving an Image.
La clase Image I/O
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 implementa la interfaz BufferedImage RenderedImage.
por lo que se puede utilizar 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 para rodear la llamada write
con un try block porque, según the API, el método produce una IOException
"si se produce un error durante la escritura"
también explicó son el objetivo, los parámetros, las devoluciones y los lanzamientos del método, en más detalle:
Escribe una imagen con una rbitrary ImageWriter que admite el formato dado en un archivo. Si ya hay un Archivo presente, su contenido se descarta.
Parámetros:
im - un RenderedImage a ser escritos.
formatName - una Cadena que contiene el nombre informal del formato.
salida - a Archivo para ser escrito.
Devoluciones:
false si no se encuentra la grabadora adecuada.
Lanza:
IllegalArgumentException - si algún parámetro es nulo.
IOException: si se produce un error durante la escritura.
Sin embargo, formatName
todavía puede parecer bastante vago y ambiguo; el tutorial lo borra un poco:
El método ImageIO.write llama al código que implementa PNG escribiendo un "plug-in PNG writer". El término plug-in se utiliza porque Image I/O es extensible y puede admitir una amplia gama de formatos.
Pero los siguientes plugins de formato de imagen estándar: JPEG, PNG, GIF, BMP y WBMP siempre están presentes.
Para la mayoría de las aplicaciones, basta con utilizar uno de estos complementos estándar. Tienen la ventaja de estar disponibles.
Hay, sin embargo, formatos adicionales que puede utilizar:
La imagen de E/clase S proporciona una manera de conectar el soporte para formatos adicionales que se pueden utilizar, y muchos de estos plug-ins existe. Si le interesan los formatos de archivo 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 matriz de cadenas que enumeran todos los formatos admitidos en este JRE.
String writerNames[] = ImageIO.getWriterFormatNames();
La matriz devuelta de nombres incluirá ningún tipo de plug-ins adicionales que se instalan y cualquiera de estos nombres se pueden utilizar como un nombre de formato para seleccionar un escritor imagen.
Para un ejemplo completo y práctico, se puede hacer referencia a Oracle SaveImage.java
example.
El código sería sobrescribir la imagen original. –
Además, asegúrese de que exista el archivo de salida. Si no lo hace, write() lanzará (incorrectamente) una NullPointerException –
surround con un try/catch. –