ImageIO en Java

Rupam Yadav 12 octobre 2023
  1. Utiliser ImageIO pour lire une image en Java
  2. Utilisez ImageIO pour écrire une image et modifier le format en Java
ImageIO en Java

ImageIO est une classe en Java, une partie du package javax.imageio contenant diverses méthodes pour effectuer des opérations comme la lecture ou l’écriture d’une image.

Nous apprendrons à utiliser la classe ImageIO pour lire et écrire une image dans les sections suivantes.

Utiliser ImageIO pour lire une image en Java

On utilise la fonction read() de la classe ImageIO pour lire une image. Dans le programme, nous créons un objet File et passons le chemin du fichier comme argument dans le constructeur.

Nous appelons la méthode read() en utilisant ImageIO et la passons dans l’objet file qui renvoie l’objet BufferedImage. Nous avons réussi à lire l’image, et nous utilisons un JFrame et ImageIcon pour afficher l’image dans une fenêtre.

Nous créons une fonction setImageToFrame() et envoyons le bufferedImage comme argument. Dans la fonction setImageToFrame(), nous créons un objet de ImageIcon et le définissons comme l’icône de JLabel à l’aide de la fonction setIcon().

Une fois que nous avons ajouté l’étiquette au cadre et exécuté le programme, nous pouvons voir l’image dans la sortie.

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);
  }
}

Production :

imageio1

On peut aussi utiliser la fonction read() pour lire une image à partir d’un lien.

Nous devons créer un objet URL et utiliser le lien vers l’image comme constructeur d’argument. Nous passons l’objet URL à la méthode 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);

Production :

imageio2

Utilisez ImageIO pour écrire une image et modifier le format en Java

Une autre opération utile que nous pouvons faire en utilisant la classe ImageIO est d’écrire une image et de changer son format. On lit d’abord l’image comme dans l’exemple précédent puis on appelle la fonction write() de la classe ImageIO qui prend trois arguments.

Le premier argument de la méthode write() est l’objet BufferedImage. Le deuxième argument est le format ou l’extension dans lequel nous voulons écrire la nouvelle image. Le dernier argument est l’objet File qui a le chemin vers la nouvelle image avec la nouvelle extension.

Dans notre exemple, nous changeons le format de notre image de JPG à PNG. Nous avons deux images : l’image originale et l’autre image que nous avons créée en utilisant la méthode 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();
    }
  }
}

Production :

imageio3

Auteur: Rupam Yadav
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