una txt subir para modificar manejo imagenes imagen guardar convertir como cargar boton archivos java file-io bufferedimage

subir - modificar archivos txt en java



Cómo guardar una Imagen Buffered como un Archivo (6)

Estoy usando la biblioteca de imgscalr Java para cambiar el tamaño de una imagen.

El resultado de una llamada al método resize () es un objeto BufferedImage. Ahora quiero guardar esto como un archivo (generalmente .jpg).

¿Cómo puedo hacer eso? Quiero pasar de BufferedImage -> File pero quizás este no sea el enfoque correcto.


  1. Descargue y agregue imgscalr-lib-x.x.jar e imgscalr-lib-x.x.jar a sus bibliotecas de proyectos.
  2. En tu código:

    import static org.imgscalr.Scalr.*; public static BufferedImage resizeBufferedImage(BufferedImage image, Scalr.Method scalrMethod, Scalr.Mode scalrMode, int width, int height) { BufferedImage bi = image; bi = resize( image, scalrMethod, scalrMode, width, height); return bi; } // Save image: ImageIO.write(Scalr.resize(etotBImage, 150), "jpg", new File(myDir));


Como un trazador de líneas:

ImageIO.write(Scalr.resize(ImageIO.read(...), 150));


La respuesta se encuentra en el Tutorial de documentación de Java para escribir / guardar una imagen .

La clase de 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 BufferedImage implementa la interfaz RenderedImage.

por lo tanto, se puede usar 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 llamada de write con un bloque de prueba porque, según la API , el método arroja una IOException "si se produce un error durante la escritura"

También se explican el objetivo del método, los parámetros, las devoluciones y los lanzamientos, con más detalle:

Escribe una imagen utilizando un ImageWriter arbitrario que admite el formato dado en un archivo. Si ya hay un Archivo presente, su contenido se descarta.

Parámetros:

im - una RenderedImage para ser escrita.

formatName - una cadena que contiene el nombre informal del formato.

salida - un archivo para ser escrito.

Devoluciones:

falso si no se encuentra el escritor apropiado.

Lanza:

IllegalArgumentException - si algún parámetro es nulo.

IOException: si ocurre 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 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, es suficiente usar uno de estos complementos estándar. Tienen la ventaja de estar disponibles.

Sin embargo, hay formatos adicionales que puede usar:

La clase de E / S de imagen proporciona una forma de conectar el soporte para formatos adicionales que se pueden usar, y existen muchos de estos complementos. 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 de nombres devuelta incluirá los complementos adicionales que estén instalados y cualquiera de estos nombres se podrá usar como nombre de formato para seleccionar un escritor de imágenes.

Para un ejemplo completo y práctico, uno puede SaveImage.java ejemplo de SaveImage.java de Oracle .


Puede guardar un objeto BufferedImage utilizando el método de escritura de la clase javax.imageio.ImageIO . La firma del método es así:

public static boolean write(RenderedImage im, String formatName, File output) throws IOException

Aquí im es la formatName RenderedImage que debe escribirse, formatName es la Cadena que contiene el nombre informal del formato (p. Ej., Png) y el output es el objeto de archivo en el que se escribirá. Un ejemplo de uso del método para el formato de archivo PNG se muestra a continuación:

ImageIO.write(image, "png", file);


Crea y guarda una java.awt.image.bufferedImage en el archivo:

import java.io.*; import java.awt.image.*; import javax.imageio.*; public class Main{ public static void main(String args[]){ try{ BufferedImage img = new BufferedImage( 500, 500, BufferedImage.TYPE_INT_RGB ); File f = new File("MyFile.png"); int r = 5; int g = 25; int b = 255; int col = (r << 16) | (g << 8) | b; for(int x = 0; x < 500; x++){ for(int y = 20; y < 300; y++){ img.setRGB(x, y, col); } } ImageIO.write(img, "PNG", f); } catch(Exception e){ e.printStackTrace(); } } }

Notas:

  1. Crea un archivo llamado MyFile.png.
  2. La imagen es de 500 por 500 píxeles.
  3. Sobrescribe el archivo existente.
  4. El color de la imagen es negro con una franja azul en la parte superior.

File outputfile = new File("image.jpg"); ImageIO.write(bufferedImage, "jpg", outputfile);