加载并显示文件夹中的所有图像从文件夹中加载所有图像使用的 API可能的增强功能
我想使用Java读取文件夹中的所有图像。
什么时候:我在Java应用程序中按一个按钮,
它应该:
- 在弹出窗口中询问目录的路径,
- 然后从此目录中加载所有图像,
- 然后显示其名称、尺寸类型和尺寸。
如何进行?
我有用于读取图像以及文件夹中所有图像的代码,但是如何完成我上面告诉的事情?
欢迎任何建议或帮助!请提供参考链接!
我想使用Java读取文件夹中的所有图像。
什么时候:我在Java应用程序中按一个按钮,
它应该:
如何进行?
我有用于读取图像以及文件夹中所有图像的代码,但是如何完成我上面告诉的事情?
欢迎任何建议或帮助!请提供参考链接!
未经测试,因为不是在安装了JDK的机器上,所以请耐心等待,这都是“按原样”输入的,但应该让你开始(期待一连串的反对票...)
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Test {
// File representing the folder that you select using a FileChooser
static final File dir = new File("PATH_TO_YOUR_DIRECTORY");
// array of supported extensions (use a List if you prefer)
static final String[] EXTENSIONS = new String[]{
"gif", "png", "bmp" // and other formats you need
};
// filter to identify images based on their extensions
static final FilenameFilter IMAGE_FILTER = new FilenameFilter() {
@Override
public boolean accept(final File dir, final String name) {
for (final String ext : EXTENSIONS) {
if (name.endsWith("." + ext)) {
return (true);
}
}
return (false);
}
};
public static void main(String[] args) {
if (dir.isDirectory()) { // make sure it's a directory
for (final File f : dir.listFiles(IMAGE_FILTER)) {
BufferedImage img = null;
try {
img = ImageIO.read(f);
// you probably want something more involved here
// to display in your UI
System.out.println("image: " + f.getName());
System.out.println(" width : " + img.getWidth());
System.out.println(" height: " + img.getHeight());
System.out.println(" size : " + f.length());
} catch (final IOException e) {
// handle errors here
}
}
}
}
}
这相对简单,并且仅使用标准的 JDK 打包类:
Java 教程的这些会话也可能对您有所帮助:
FilenameUtils
通过结合上述所有内容,这很容易做到。
javaxt.io.Directory directory = new javaxt.io.Directory(“C:\Users\Public\Pictures\Sample Pictures”);directory.getFiles();javaxt.io.File[] files;
java.io.FileFilter filter = file -> !file.isHidden() && (file.isDirectory() || (file.getName().endsWith(".jpg")));
files = directory.getFiles(filter, true);
System.out.println(Arrays.toString(files));