开发者

Showing TIFF images in Java

开发者 https://www.devze.com 2022-12-09 01:05 出处:网络
Someone can tell me how to load a multipag开发者_如何学编程e TIFF image in Java and show it in a JScrollPane? Which class can I use?AFAIK, you can\'t do that with Java\'s standard API.

Someone can tell me how to load a multipag开发者_如何学编程e TIFF image in Java and show it in a JScrollPane? Which class can I use?


AFAIK, you can't do that with Java's standard API.

JAI can however:

import java.io.File;
import java.io.IOException;
import java.awt.Frame;
import java.awt.image.RenderedImage;
import javax.media.jai.widget.ScrollingImagePanel;
import javax.media.jai.NullOpImage;
import javax.media.jai.OpImage;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;

public class MultiPageRead extends Frame {

    ScrollingImagePanel panel;

    public MultiPageRead(String filename) throws IOException {

        setTitle("Multi page TIFF Reader");

        File file = new File(filename);
        SeekableStream s = new FileSeekableStream(file);

        TIFFDecodeParam param = null;

        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);

        System.out.println("Number of images in this TIFF: " +
                           dec.getNumPages());

        // Which of the multiple images in the TIFF file do we want to load
        // 0 refers to the first, 1 to the second and so on.
        int imageToLoad = 0;

        RenderedImage op =
            new NullOpImage(dec.decodeAsRenderedImage(imageToLoad),
                            null,
                            OpImage.OP_IO_BOUND,
                            null);

        // Display the original in a 800x800 scrolling window
        panel = new ScrollingImagePanel(op, 800, 800);
        add(panel);
    }

    public static void main(String [] args) {

        String filename = args[0];

        try {
            MultiPageRead window = new MultiPageRead(filename);
            window.pack();
            window.show();
        } catch (java.io.IOException ioe) {
            System.out.println(ioe);
        }
    }
}

Example from: http://java.sun.com/products/java-media/jai/forDevelopers/samples/MultiPageRead.java


This example code from Sun uses 1.0 constructs. In particular, the javax.media.jai.widget.ScrollingImagePanel was deprecated in 1.1. The documentation explains that it was unable to show some images but doesn't give another class to use.

Also the line TIFFDecodeParam param = null; must be changed to ImageDecodeParam param = null; in order to get the code to compile.

0

精彩评论

暂无评论...
验证码 换一张
取 消