ImageIO in Java
-
Verwendung von
ImageIO
zum Lesen eines Bildes in Java -
Verwenden Sie
ImageIO
, um ein Bild zu schreiben und das Format in Java zu ändern
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:
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:
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:
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