java - 在java中将TIF图像添加到Jlist或Frame中

标签 java image swing tiff jlist

我正在尝试加载 .TIF 格式的图像以添加到 Jlist 并将其显示到框架中。 这是我尝试过的代码,尽管图像已加载,但我的框架仍然看起来是空的并且没有显示任何内容。 请更正我的代码或建议我应该进行哪些更改才能显示我的 .TIF 图像。

import javax.media.jai.PlanarImage;
import com.sun.media.jai.codec.ByteArraySeekableStream;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.SeekableStream;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.awt.Image;
import java.awt.image.RenderedImage;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JList;

public class ImageViewer {
  static Image load(byte[] data) throws Exception {
    Image image = null;
    SeekableStream stream = new ByteArraySeekableStream(data);
    String[] names = ImageCodec.getDecoderNames(stream);
    ImageDecoder dec =
            ImageCodec.createImageDecoder(names[0], stream, null);
    RenderedImage im = dec.decodeAsRenderedImage();
    image = PlanarImage.wrapRenderedImage(im).getAsBufferedImage();
    return image;
}



public static void main(String[] args) throws Exception {
    String path;

    DefaultListModel listModel = new DefaultListModel();
    JFrame frame = new JFrame("Split Pain");
    frame.setSize(700, 500);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    path ="C:/Documents and Settings/Administrator/My Documents/My Pictures/tiff Images/CCITT_1.TIF";
    FileInputStream in = new FileInputStream(path);
    FileChannel channel = in.getChannel();
    ByteBuffer buffer = ByteBuffer.allocate((int) channel.size());
    channel.read(buffer);
    Image image = load(buffer.array());
    Image imageScaled =image.getScaledInstance(500, -1, Image.SCALE_SMOOTH);
    listModel.addElement(new ImageIcon(imageScaled));
    final JList list = new JList(listModel);
    frame.add(list);
    }
}

最佳答案

PlanarImage image = JAI.create("fileload", "C:\JAVA\mahes_24_m\09-11-1988\mdr16.tiff"); 使用此语法您可以加载 tiff 图像。 BufferedImage bi = image.getAsBufferedImage(); 将这个bi添加到ListModel并将这个ListModel赋予JList,并将JList添加到JFrame。 但首先你必须下载 JAI API 才能使用 PlanerImage 类。

关于java - 在java中将TIF图像添加到Jlist或Frame中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9666025/

相关文章:

java - MySQL。当尝试删除一些重复行时,它会删除最后一行并且不会再删除任何行

java - 如何在同一行上使用 map 和 orElseThrow?

css - Neat 2.0 中的响应图像

ios - 如何在Swift中同时添加Button+ScrollView?

java - 调用paint()方法时图像闪烁

java - 重新调整保留在父 JFrame 内的 JInternalFrame 的大小,并且该父 JFrame 已使用 ComponentMover API 注册

java - 从浏览器上传多个文件的最佳方式

java - java swing中的图像定位

java - 绘制随机圆圈,将不与另一个圆圈相交的任何圆圈涂成红色

java - Java 小程序上的paint() 设置为无限循环。我如何避免我的方法做同样的事情?