3

Java で複数ページの TIFF 画像を読み込んで JScrollPane に表示する方法を教えてください。どのクラスを使用できますか?

4

2 に答える 2

4

私の知る限り、Javaの標準APIではそれを行うことはできません。

ただし、JAIは次のことができます。

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

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

于 2009-10-14T16:30:12.093 に答える
0

この Sun のコード例では、1.0 の構造を使用しています。特に、javax.media.jai.widget.ScrollingImagePanel は 1.1 で廃止されました。ドキュメントには、一部の画像を表示できなかったと説明されていますが、使用する別のクラスは提供されていません。

また、行 TIFFDecodeParam param = null; ImageDecodeParam param = null; に変更する必要があります。コードをコンパイルするため。

于 2009-10-29T16:41:11.937 に答える