ImageIO in Java

Rupam Yadav 12 Oktober 2023
  1. Verwendung von ImageIO zum Lesen eines Bildes in Java
  2. Verwenden Sie ImageIO, um ein Bild zu schreiben und das Format in Java zu ändern
ImageIO in Java

ImageIO ist eine Klasse in Java, ein Teil des javax.imageio-Pakets, das verschiedene Methoden enthält, um Operationen wie das Lesen oder Schreiben eines Bildes auszuführen.

In den folgenden Abschnitten werden wir lernen, die Klasse ImageIO zu verwenden, um ein Bild zu lesen und zu schreiben.

Verwendung von ImageIO zum Lesen eines Bildes in Java

Wir verwenden die Funktion read() der Klasse ImageIO, um ein Bild zu lesen. Im Programm erstellen wir ein Objekt von File und übergeben den Pfad der Datei als Argument im Konstruktor.

Wir rufen die read()-Methode mit ImageIO auf und übergeben sie im file-Objekt, das das BufferedImage-Objekt zurückgibt. Wir haben das Bild erfolgreich gelesen und verwenden ein JFrame und ein ImageIcon, um das Bild in einem Fenster anzuzeigen.

Wir erstellen eine Funktion setImageToFrame() und senden das bufferedImage als Argument. In der Funktion setImageToFrame() erstellen wir ein Objekt von ImageIcon und setzen es mit der Funktion setIcon() als Icon von JLabel.

Sobald wir das Etikett zum Rahmen hinzugefügt und das Programm ausgeführt haben, können wir das Bild in der Ausgabe sehen.

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

Ausgabe:

imageio1

Wir können auch die Funktion read() verwenden, um ein Bild von einem Link zu lesen.

Wir müssen ein URL-Objekt erstellen und den Link zum Bild als Argumentkonstruktor verwenden. Wir übergeben das Objekt URL an die Methode 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);

Ausgabe:

imageio2

Verwenden Sie ImageIO, um ein Bild zu schreiben und das Format in Java zu ändern

Eine weitere nützliche Operation, die wir mit der Klasse ImageIO ausführen können, besteht darin, ein Bild zu schreiben und sein Format zu ändern. Wir lesen zuerst das Bild wie im vorherigen Beispiel und rufen dann die Funktion write() der Klasse ImageIO auf, die drei Argumente akzeptiert.

Das erste Argument der write()-Methode ist das BufferedImage-Objekt. Das zweite Argument ist das Format oder die Erweiterung, in dem wir das neue Bild schreiben möchten. Das letzte Argument ist das File-Objekt, das den Pfad zum neuen Bild mit der neuen Erweiterung enthält.

In unserem Beispiel ändern wir das Format unseres Bildes von JPG auf PNG. Wir haben zwei Bilder: das Originalbild und das andere Bild, das wir mit der Methode write() erstellt haben.

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

Ausgabe:

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