Mit Hilfe der JAI-Bibliothek können u.a. auch TIFF-Bilder dargestellt und gespeichert werden.

JAI - Java Advanced Imaging ist eine Klassenbibliothek, die es erlaubt, fortgeschrittene Bildmanipulationen vorzunehmen. Sie wird vorzugsweise im Bereich der Bearbeitung medizinischer oder geophysikalischer Bilder eingesetzt, kann jedoch auch zum Umgang mit Dateien verwendet werden, die die Java-Core-Klassen nicht unterstützen.

Das Beispiel zeigt, wie ein TIFF-Bild geladen, angezeigt und wieder abgespeichert werden kann.

import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.renderable.ParameterBlock;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.ParameterBlockJAI;
import javax.media.jai.PlanarImage;
import javax.media.jai.RenderedOp;
import javax.swing.JFrame;

import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.widget.DisplayJAI;

public class TiffDarstellenClass extends JFrame {

    private static final long serialVersionUID = 1L;

    private PlanarImage source = null;

    public TiffDarstellenClass() {

        String inputFilename = "bild.tif";

        String outputFilenameBMP = "bild.bmp";

        FileSeekableStream image = null;
        try {
            image = new FileSeekableStream(inputFilename);
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(0);
        }

        ParameterBlock pb = new ParameterBlock();
        pb.add(image);

        RenderedOp image1 = JAI.create("tiff", pb);

        DisplayJAI panel = new DisplayJAI(image1);

        this.add(panel);

        JAI.create("filestore", image1, outputFilenameBMP, "BMP");
    }

    public static void main(String[] args) {

        TiffDarstellenClass jtc = new TiffDarstellenClass();
        jtc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jtc.setVisible(true);
        jtc.pack();
    }
}

Ein InputStream vom Typ FileSeekableStream wird mit Hilfe des Pfades der zu öffnenden Datei gebildet.
Nun muss zunächst ein Objekt vom Typ ParameterBlock gebildet und diesem die Instanz des InputStream übergeben werden. Mit Hilfe des ParameterBlock-Objektes wird über die Methode create() der Klasse JAI eine Instanz eines PlanarImage erstellt. Sie stellt die zentrale Klasse eines zweidimensionalen RenderedImage der JAI-Bibliothek dar.
Zur Darstellung des geladenen Bildes wird ein Objekt eines DisplayJAI erzeugt. Die Klasse erweitert JPanel, ihr Konstruktor erwartet ein Objekt eines RenderedImage, das im Panel angezeigt wird.
Zum Speichern des Bildes wird über die Methode JAI.create() ein Operator gebildet, dem ein Bezeichner, der Ausgangs-Operator, der Speicher-Pfad und der Dateityp als String übergeben werden.