Wie kann man z.B. eine *.jpg-Datei in eine *.png-Datei konvertieren?
Das Auslesen des vorhandenen Bildes geschieht folgendermaßen:
Die statische Methode read() der Klasse ImageIO
liefert durch Auslesen des File-Objektes des Dateipfades ein BufferedImage.
Um Fehler beim Lesen abzufangen, muss dies innerhalb eines try-catch-Blockes
erfolgen.
Nun erfolgt das Anlegen der neuen Datei:
Über die statische Methode getImageWritersByFormatName(String
formatName) erzeugt man einen Iterator, der alle ImageWriter-Objekte
enthält, die in der Lage sind, den übergebenen Dateityp zu
codieren. Nach Erzeugen des File-Objektes des Zielpfades
und eines ImageOutputStream wird diesem das Ziel mittels ImageWriter.setOutput()
mitgeteilt und anschließend das BufferedImage
geschrieben.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Bilddatei_konvertieren {
public static void main(String[] args) {
String path = "/Users/joecze/Desktop/test/";
String srcName = "001";
String srcExt = "jpg";
String destName = "bild";
String destExt = "png";
BufferedImage img = null;
File source = new File(path + srcName + "." + srcExt);
if (source.canRead() && source.isFile()) {
try {
img = ImageIO.read(source);
} catch (IOException e1) {
e1.printStackTrace();
}
}
Iterator<ImageWriter> writers = ImageIO
.getImageWritersByFormatName(destExt);
ImageWriter writer = (ImageWriter) writers.next();
File f = new File(path + destName + "." + destExt);
ImageOutputStream ios;
try {
ios = ImageIO.createImageOutputStream(f);
writer.setOutput(ios);
writer.write((BufferedImage) img);
ios.close();
} catch (IOException e) {
e.printStackTrace();
}
ImageIcon bild = new ImageIcon(img);
JLabel label = new JLabel(bild);
label.setIcon(bild);
JFrame frame = new JFrame();
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
Als ImageIcon wird die Datei schließlich auf einem JLabel dargestellt.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.