Подтвердить что ты не робот

Загружать и отображать все изображения из папки

Я хочу прочитать все изображения в папке с помощью Java.

Когда: Я нажимаю кнопку в приложении Java,
Он должен:

  • запросить путь к каталогу во всплывающем окне,
  • , затем загрузите все изображения из этого каталога,
  • , затем отобразить их имена, типы и размер.

Как действовать?

У меня есть код для чтения изображения, а также для всего изображения в папке, но как вещи, о которых я говорил выше, могут быть сделаны?

Любое предложение или помощь приветствуются! Пожалуйста, укажите ссылки!

4b9b3361

Ответ 1

Не проиндексирован, потому что не на машине с установленным JDK, так что несите меня, чтобы все набрали "as-is", но вам нужно начать (ожидайте прилив downvotes...)

Загрузка всех изображений из папки

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 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-пакетов:

Эти сеансы Java Tutorial могут помочь вам:

Возможные улучшения

  • Использование Apache Commons FilenameUtils для извлечения расширений файлов
  • Обнаружение файлов на основе фактических типов или контента mime, а не на основе расширений
  • Я оставляю код UI до вас. Поскольку я не знаю, является ли это домашней работой или нет, я не хочу предлагать полное решение. Но продолжать:
    • Посмотрите на FileChooser, чтобы выбрать папку.
    • Я предполагаю, что вы уже знаете, как создавать фреймы/окна/диалоги.
    • Ознакомьтесь с разделами Java Tutorial Как использовать иконки, в которых рассказывается, как отображать и маркировать их.
  • Я не рассмотрел некоторые вопросы:
    • Обработка исключений
    • Папки со злыми эндигами (скажем, у вас есть папка "TryMeIAmEvil.png" )

Объединив все вышеизложенное, это довольно легко сделать.

Ответ 2

javaxt.io.Directory directory = new javaxt.io.Directory( "C:\Users\Public\Pictures\Sample Pictures" );       Directory.GetFiles();       javaxt.io.File [] файлы;

    java.io.FileFilter filter = file -> !file.isHidden() && (file.isDirectory() || (file.getName().endsWith(".jpg")));
    files = directory.getFiles(filter, true);
    System.out.println(Arrays.toString(files));