Java で複数ページの TIFF 画像を読み込んで JScrollPane に表示する方法を教えてください。どのクラスを使用できますか?
7356 次
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 に答える