Wie kann ein BufferedImage
in eine Datei gespeichert
werden?
Im Beispiel wird eine JPG-Datei eingelesen, in ein BufferedImage
konvertiert und als*.png
im Dateisystem wieder
abgespeichert.
Die Methode createBI()
lädt
eine JPG-Datei aus dem Dateisystem durch die Methode read()
der Klasse javax.imageio.ImageIO
und wandelt sie in
ein BufferedImage
. Die Operation muss in einem
try-catch-Block erfolgen, um Einlesefehler abzufangen. Bei
Misserfolg wird null
zurückgegeben, ansonsten das
erzeugte BufferedImage
-Objekt.
Der Methode saveBI()
wird die Rückgabe von createBI()
als Parameter übergeben. Ist dieser null
terminiert sie mit einer Fehlermeldung und das Programm wird
beendet. Wird jedoch ein korrekt erzeugtes BufferedImage
übergeben, wird zunächst mit Hilfe des ebenfalls
übergebenen Pfad-Strings ein File
-Objekt erzeugt.
In
einem try-catch-Block, der wiederum zum Abfangen von
Ein-Ausgabe-Fehlern dient, wird dann versucht, die neue Datei
anzulegen. Dies erfolgt nur, wenn die Datei unter dem angegebenen
Pfad noch nicht existiert. Ausschließlich wenn sie auch
wirklich neu angelegt wurde, wird dann das BufferdImage
durch die Methode write()
der Klasse ImageIO
abgespeichert. Hierzu muss der Methode neben dem BufferedImage
-
und dem File
-Objekt noch ein String des Dateityps
übergeben werden. Dieses Verfahren gewährleistet, dass
eine bereits vorhandene Datei nicht überschrieben wird.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class BufferedImageToFile {
public static void main(String[] args) {
BufferedImageToFile bIF = new BufferedImageToFile();
bIF.saveBI(bIF.createBI(), "testbild.png", "png");
}
private BufferedImage createBI() {
BufferedImage bi = null;
try {
bi = ImageIO.read(new File("img/test.jpg"));
} catch (IOException e) {
System.err.println("Datei nicht lesbar!");
}
return bi;
}
private void saveBI(BufferedImage bi, String path, String type) {
if (bi != null) {
File imageFile = new File(path);
try {
if (imageFile.createNewFile()) {
ImageIO.write(bi, type, imageFile);
}
} catch (IOException e) {
System.err.println("Datei konnte nicht gespeichert werden!");
}
} else {
System.err.println("BufferedImage ist null");
}
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.