如何使用其路径显示图像

时间:2013-11-12 04:58:34

标签: java image swing path

我有一个字符串中的图像路径我希望使用该路径在jlabel上显示它。请帮帮我。

if(!ar.get(16).equals("empty")){
    String photo=(String)ar.get(16);

    System.out.println(photo);
    // if(!photo.equals(""))
    //  pic.setText(photo);

    Image image=Toolkit.getDefaultToolkit().getImage(photo);;
    ImageIcon img=new ImageIcon(image.getScaledInstance(view.jLabel5.getWidth(), view.jLabel5.getHeight(), 0));


    //JpegReader jrdr=new JpegReader();
    //view.jLabel5.setSize(img, image.getWidth());
    view.jLabel5.setPreferredSize(new Dimension(100, 100));
    view.jLabel5.setIcon(img);

}

3 个答案:

答案 0 :(得分:3)

如果图像是嵌入式资源(即存在于应用程序上下文中/与应用程序Jar捆绑在一起),那么您需要使用getResource来访问它..

Toolkit.getDefaultToolkit().getImage期望传递给它的String是文件系统上的文件。

如果图像是嵌入的,那​​么您将需要使用更像......

的内容
Toolkit.getDefaultToolkit().getImage(getClass().getResource(photo))

加载它。

如果从文件系统加载图像,则可以使用

File file = new File(photo);
if (file.exists()) {
    // Attempt to load the image
} else {
    // Show error message.
}

由于Toolkit#getImage的工作方式,如果图像由于某种原因无法加载,它将不会提供任何细节。

相反,您应该使用ImageIO,如果由于某种原因无法加载图片,则会引发IOException ...

BufferedImage img = ImageIO.read(getClass().getResource(photo));

BufferedImage img = ImageIO.read(new File(photo));

取决于图像的位置。

看看Reading/Loading an Image

您还应该避免明确调用setPreferredSize,只需让JLabel自行选择...

答案 1 :(得分:1)

将图像文件放入项目中。在一个单独的文件夹下。

ImageIcon image = new ImageIcon(this.getClass().getResource("/images/abc.jpg"));
JLabel imageLabel = new JLabel(image, JLabel.CENTER);

如果您要为计算机上的任何其他位置加载图像,请

ImageIcon image = new ImageIcon("C:/images/image.png");
JLabel imagelabel = new JLabel(image);

答案 2 :(得分:0)

确保您的路径正确无误。如果photo字符串路径为"photo.jpeg",则您的路径应如下所示

ProjectRoot
        photo.jpeg
        src

如果您想将photo.jpeg放在目录images中,则应使用"images/photo.jpeg"

ProjectRoot
        images
            photo.jpeg
        src

这是在考虑使用像Netbeans或Ecplise这样的IDE。