当前位置: 首页 > 面试题库 >

加载并显示文件夹中的所有图像

史鹏云
2023-03-14
问题内容

我想使用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
                }
            }
        }
    }
}

使用的API

这相对简单,只使用标准的JDK打包的类:

  • File
  • FilenameFilter
  • BufferedImage
  • ImageIO

这些Java教程的课程可能对您也有帮助:

  • 读取/加载图像
  • 如何使用图标
  • 如何使用文件选择器

可能的增强

  • 使用Apache Commons FilenameUtils提取文件的扩展名
  • 根据实际的MIME类型或内容而不是扩展名检测文件
  • 我将UI代码留给您。由于我不知道这是否是家庭作业,因此我不想提供完整的解决方案。但继续:
    • 查看FileChooser以选择文件夹。
    • 我假设您已经知道如何制作框架/窗口/对话框。
    • 阅读Java教程 如何使用图标部分,该部分教您如何显示和标记它们。
  • 我遗漏了一些要处理的问题:
    • 异常处理
    • 带有邪恶符号的文件夹(例如,您有一个文件夹“ TryMeIAmEvil.png”)

通过结合以上所有内容,这很容易做到。



 类似资料:
  • 问题内容: 我想在不知道文件名的情况下将所有图像加载到文件夹中,然后将它们存储到Integer向量中-在运行时。 实际上,我需要执行与本示例相同的操作:http : //developer.android.com/resources/tutorials/views/hello- gridview.html 但是在运行时却不知道文件名。 有什么帮助吗? 在您回答之后,我知道该怎么做…但是我不知道如何

  • 本文向大家介绍C#显示文件夹下所有图片文件的方法,包括了C#显示文件夹下所有图片文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#显示文件夹下所有图片文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我正在尝试从文件中加载图像而不使用。这些文件夹是: 我想将图像加载到资产文件夹中。我试过了: 我已经尝试过使用字符串路径“ /TestProject/assets/drawIcon.png”,但是什么也没有。我不知道如何加载该图片! 问题答案: 将目录设置为资源目录,然后从“ /drawIcon.png”位置将图像加载为资源: 如果要创建javafx图像: 在这种情况下,也请将该文件夹

  • 问题内容: 有人可以为我提供导入整个模块目录的好方法吗? 我有这样的结构: 我尝试通过添加和执行操作将其转换为程序包,但它没有按我希望的方式工作。 问题答案: 列出当前文件夹中的所有文件,并将它们作为变量放入

  • 我正在尝试做一个小应用程序,只显示图片从一个特定的文件夹在一个图库视图。我找到了几个例子,但每一个都只能显示一个图像。我将在下面发布的这个例子是一个很好的帮助,它做几乎完全是我想要它做的,我只需要改变它显示图像从特定的文件夹,而不是所有的文件夹。我花了几天的时间来尝试,但我似乎没有添加正确的代码。我觉得这是一件很简单的事情,我也错过了。如有任何帮助,我们将不胜感激!

  • 所以我正在学习关于android的Firebase存储,但我遇到了困难。我想要获得我存储在Firebase存储的文件夹中的所有图像,一旦获得对它们的引用,我想要将它们存储在ListView或RecyclerView中。我该怎么做?我的意思是我可以获得文件夹的引用: