ImageIO en Java

Rupam Yadav 12 octubre 2023
  1. Use ImageIO para leer una imagen en Java
  2. Use ImageIO para escribir una imagen y cambiar el formato en Java
ImageIO en Java

ImageIO es una clase en Java, una parte del paquete javax.imageio que contiene varios métodos para realizar operaciones como leer o escribir una imagen.

Aprenderemos a usar la clase ImageIO para leer y escribir una imagen en las siguientes secciones.

Use ImageIO para leer una imagen en Java

Usamos la función read() de la clase ImageIO para leer una imagen. En el programa, creamos un objeto de File y pasamos la ruta del archivo como argumento en el constructor.

Llamamos al método read() usando ImageIO y lo pasamos en el objeto file que devuelve el objeto BufferedImage. Hemos leído con éxito la imagen y usamos un JFrame y un ImageIcon para mostrar la imagen en una ventana.

Creamos una función setImageToFrame() y enviamos el bufferedImage como argumento. En la función setImageToFrame(), creamos un objeto de ImageIcon y lo configuramos como el icono de JLabel usando la función setIcon().

Una vez que agregamos la etiqueta al marco y ejecutamos el programa, podemos ver la imagen en la salida.

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

public class JavaExample {
  public static void main(String[] args) {
    try {
      File file = new File(
          "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");

      BufferedImage bufferedImage = ImageIO.read(file);

      setImageToFrame(bufferedImage);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  static void setImageToFrame(BufferedImage image) {
    ImageIcon imageIcon = new ImageIcon(image);

    JFrame jFrame = new JFrame();
    jFrame.setLayout(new FlowLayout());
    jFrame.setSize(700, 500);

    JLabel jLabel = new JLabel();
    jLabel.setIcon(imageIcon);

    jFrame.add(jLabel);
    jFrame.setVisible(true);

    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Producción:

imageio1

También podemos usar la función read() para leer una imagen de un enlace.

Necesitamos crear un objeto URL y usar el enlace a la imagen como constructor de argumentos. Pasamos el objeto URL al método read().

URL url = new URL(
    "https://images.unsplash.com/photo-1516475429286-465d815a0df7?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&dl=will-klinzman-oaCD9WYdNlU-unsplash.jpg&w=640");

BufferedImage bufferedImage = ImageIO.read(url);

Producción:

imageio2

Use ImageIO para escribir una imagen y cambiar el formato en Java

Otra operación útil que podemos hacer usando la clase ImageIO es escribir una imagen y cambiar su formato. Primero leemos la imagen como lo hacemos en el ejemplo anterior y luego llamamos a la función write() de la clase ImageIO que toma tres argumentos.

El primer argumento del método write() es el objeto BufferedImage. El segundo argumento es el formato o extensión en el que queremos escribir la nueva imagen. El último argumento es el objeto File que tiene la ruta a la nueva imagen con la nueva extensión.

En nuestro ejemplo, cambiamos el formato de nuestra imagen de JPG a PNG. Tenemos dos imágenes: la imagen original y la otra imagen que creamos usando el método write().

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class JavaExample {
  public static void main(String[] args) {
    try {
      File file = new File(
          "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");

      BufferedImage bufferedImage = ImageIO.read(file);

      ImageIO.write(bufferedImage, "png",
          new File(
              "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.png"));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Producción:

imageio3

Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn