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