gpt4 book ai didi

java - 如何从 java 中的文件夹目录中获取 png 图像名称、路径、高度和宽度?

转载 作者:行者123 更新时间:2023-11-30 08:19:55 27 4
gpt4 key购买 nike

我正在尝试编写一个程序,通过 GUI 提示用户找到一个包含其他文件夹、png 图像或其他类型文件的文件夹。我想首先使用图像名称、路径、高度和宽度(按此顺序)填充 jTable,然后再继续我现在不会涉及的其他比较操作。

我尝试使用 jFileChooser 来查找用户想要的文件夹。我现在不知道如何查找和过滤 .png 文件。我尝试使用 for each 循环从 jFileChooser.getSelectedFiles() 循环遍历给定的文件数组,但我无法通过我的理解将文件区分为 png 图像或其他方式。

我尝试在我想要的按钮 Action 监听器中使用以下代码:

    private void btnPatchSelActionPerformed(java.awt.event.ActionEvent evt)
{
fchsFolderChooser.showOpenDialog(null);
File files[] = fchsFolderChooser.getSelectedFiles();
String fileNames[] = fchsFolderChooser.getSelectedFile().list("*.png");
}

我认为稍后需要可用的文件数据来填充高度和宽度列表,因此我创建了一个 File 对象数组来保存这些数据。我还想要一个经过过滤的具有 .png 扩展名的字符串文件名列表,但事实证明实现它对我来说很难理解。

您将如何找到指定目录中的所有 png 图像文件(不需要其他文件类型),获取它们的名称、路径、高度和宽度,并最终将这些数据点填充到 jTable 中? (尽可能少的代码行)

最佳答案

列出文件

File selectedFile = fchsFolderChooser.getSelectedFile();
File pngs[] = selectedFile.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".png");
}
});

参见 File#listFilesFileFilter更多详情...

图像属性

for (File png : pngs) {

try {
BufferedImage img = ImageIO.read(png);
int width = img.getWidth();
int height = img.getHeight();
System.out.println(png.getParent() + ", " + png.getName() + " @ " + width + "x" + height);
} catch (IOException e) {
System.out.println("Bad image: " + png);
e.printStackTrace();
}

}

参见 Reading/Loading an ImageBufferedImage更多详情...

展开

从这里开始,我将创建一个 POJO(普通旧 Java 对象),它将维护对原始 PNG File 的引用并存储宽度和高度以便于查找。

然后您可以将这些对象添加到某种类型的 TableModel 并将其应用于 JTable

注意,生成这些属性可能需要一些时间

关于java - 如何从 java 中的文件夹目录中获取 png 图像名称、路径、高度和宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com