Java从2个目录以上读取图像

标签 java file png directory

如何在屏幕上放置 2 个目录以上的图像?这是我的代码:

package mousemaze;

// Imports
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class LoadScreen extends JPanel {
    private static final long serialVersionUID = 1L;

    private String logoPath = "././images/snakyboLogo.png";
    BufferedImage logoImage;
    JLabel logoLabel;

    public LoadScreen() {
        try {
            System.out.println(logoPath);
            logoImage = ImageIO.read(new File(logoPath));
            System.out.println("1");
            logoLabel = new JLabel(new ImageIcon(logoImage));
            System.out.println("2");
            add(logoLabel);
            System.out.println("End");
        } catch (IOException ex) {
            System.out.println("Fail");
        }
    }
}

但是失败了

logoImage = ImageIO.read(new File(logoPath));

所以我认为它无法在该目录中找到指定的文件。 我的文件夹结构是:

  • src\mousemaze\LoadScreen.java
  • src\images\snakyboLogo.png

所以我猜测这不是我在完全不同的包中指定文件的方式,那么我该怎么做呢?

最佳答案

  • 问题 1 - 路径文字 . 解析为当前目录,我假设您打算使用 ...
  • 问题 2 - 绝对不建议使用相对路径从 Java 中读取文件。如果您的应用程序部署在您假定的结构之外的任何位置,它就会崩溃

您将通过使用资源流获得更多里程

InputStream logoStream = getClass().getResourceAsStream("/images/snakyboLogo.png");
if(logoStream != null) logoImage = ImageIO.read(logoStream);

关于Java从2个目录以上读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008985/

相关文章:

java - 在设置为 ImageView 之前在哪里调用 Crop Image

java - 编写无法删除的注释(VB 和 Java)

python - 将基本变量列表写入文本文件

java - ImageIO.read() 是否保持 PNG 文件的透明度?

html - 将 Canvas 导出为 .gif 图像

java - CRUD-Repository OrderBy 不需要参数

java - 需要从 JFrame 中的单选按钮获取输入,并在另一个类中使用选定的输入

java - 写一个巨大的文件和 Java 堆空间

c - 将 .txt 中的单词转换为 C 中的数组

python - 如何在Python中导入png图像