Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
270 views
in Technique[技术] by (71.8m points)

java - Load and display all the images from a folder

I want to read all the images in a folder using Java.

When: I press a button in the Java application,
It should:

  • ask for the directory's path in a popup,
  • then load all the images from this directory,
  • then display their names, dimension types and size.

How to proceed?

I have the code for read the image and also for all image in the folder but how the things i told above can be done?

Any suggestion or help is welcome! Please provide reference links!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Untested because not on a machine with a JDK installed, so bear with me, that's all typed-in "as-is", but should get you started (expect a rush of downvotes...)

Loading all the Images from a Folder

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
                }
            }
        }
    }
}

APIs Used

This is relatively simple to do and uses only standard JDK-packaged classes:

These sessions of the Java Tutorial might help you as well:

Possible Enhancements

  • Use Apache Commons FilenameUtils to extract files' extensions
  • Detect files based on actual mime-types or content, not based on extensions
  • I leave UI code up to you. As I'm unaware if this is homework or not, I don't want to provide a full solution. But to continue:
    • Look at a FileChooser to select the folder.
    • I assume you already know how to make frames/windows/dialogs.
    • Read the Java Tutorial How to Use Icons sections, which teaches you how to display and label them.
  • I left out some issues to be dealt with:
    • Exception handling
    • Folders with evil endigs (say you have a folder "TryMeIAmEvil.png")

By combining all of the above, it's pretty easy to do.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...