Wie kann man z.B. eine *.jpg-Datei in eine *.png-Datei konvertieren?

Die Klasse javax.imageio.ImageIO stellt Methoden bereit, mit denen Bilddateien auch konvertiert werden können.

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.