繁体   English   中英

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

[英]How do I get png image names, paths, heights, and widths from a directory of folders in java?

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

我尝试使用jFileChooser查找用户想要的文件夹。 目前,我不知道该如何查找和过滤.png文件。 我尝试使用for每个循环从jFileChooser.getSelectedFiles()循环遍历给定的文件数组,但是我无法通过理解将文件区分为png图像。

我尝试在所需的按钮动作侦听器中使用以下代码:

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

我以为以后需要使用文件数据来填充高度和宽度列表,因此我创建了一个File对象数组来容纳这些对象。 我还想要一个具有.png扩展名的String文件名的过滤列表,但是事实证明,实现这一点对我来说很难理解。

您将如何查找指定目录中的所有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();
    }

}

有关更多详细信息,请参见读取/加载图像BufferedImage

扩张

从这里,我将创建一个POJO(普通的Java旧对象),该对象将保留对原始PNG File的引用,并存储其宽度和高度以使其更易于查找。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM