![](/img/trans.png)
[英]How do I create an image mask from a PNG with transparency in Java?
[英]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#listFiles
和FileFilter
。
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.