18

Javaを使用してフォルダ内のすべての画像を読みたい。

いつ: Javaアプリケーションのボタンを押すと、次のようになります

  • ポップアップでディレクトリのパスを尋ね、
  • 次に、このディレクトリからすべての画像をロードします。
  • 次に、名前、寸法タイプ、サイズを表示します。

どうやって進める?

画像とフォルダ内のすべての画像を読み取るためのコードがありますが、上記のことをどのように行うことができますか?

どんな提案や助けも大歓迎です!参照リンクを提供してください!

4

3 に答える 3

47

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パッケージクラスのみを使用します。

Javaチュートリアルのこれらのセッションは、次の場合にも役立ちます。

可能な機能強化

  • ApacheCommonsFilenameUtilsを使用してファイルの拡張子を抽出します
  • 拡張子ではなく、実際のmimeタイプまたはコンテンツに基づいてファイルを検出する
  • UIコードはあなたに任せます。これが宿題かどうかわからないので、完全な解決策を提供したくありません。しかし、続けるには:
    • を見FileChooserてフォルダを選択します。
    • フレーム/ウィンドウ/ダイアログの作成方法をすでに知っていると思います。
    • アイコンの表示とラベル付けの方法を説明する「アイコンの使用方法」セクション をお読みください。
  • 私は対処すべきいくつかの問題を省略しました:
    • 例外処理
    • 邪悪なエンディグのあるフォルダー(「TryMeIAmEvil.png」フォルダーがあるとします)

上記のすべてを組み合わせることで、非常に簡単に実行できます。

于 2012-07-02T20:58:50.740 に答える
1

javaxt.io.Directoryディレクトリ=newjavaxt.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));
于 2017-06-17T21:31:28.973 に答える
-1
step 1=first of all make a folder out of webapps 
step2= write code to uploading a image in ur folder
step3=write a code to display a image in ur respective jsp,html,jframe what u want

this is folder=(images)
reading image for folder'
Image image = null;
        try {
            File sourceimage = new File("D:\\images\\slide4.jpg");
              image = ImageIO.read(sourceimage);

        } catch (IOException e) {
            e.printStackTrace();
        }       
    }
于 2018-02-26T13:26:46.190 に答える