ImageIO en Java
-
Use
ImageIO
para leer una imagen en Java -
Use
ImageIO
para escribir una imagen y cambiar el formato 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:
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:
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:
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