Java - применить функцию ко всем файлам в данном каталоге - PullRequest
0 голосов
/ 25 января 2012

Я хотел бы знать, возможно ли применить функцию ко всем файлам в каталоге с использованием Java?

Более конкретно, я хочу прочитать все изображения в папке, преобразовать их в двоичный файл(два цвета / черный и белый), а затем сохраните двоичное изображение как новое изображение в другом каталоге (например, directory\binary).

Примерно так:

for(all images in folder)
    read in image
    make(binaryImg)
    saveNewImage
endFor

У меня есть 300 изображений, поэтому я надеялся, что есть способ сделать это?

Большое спасибо.

Ответы [ 4 ]

1 голос
/ 25 января 2012

Вы можете сделать это следующим образом:

File dir = new File("/dir/");
for(File f : dir.listFiles())
  processImage(f);

Конечно, поскольку у вас много файлов, вы можете создать Runnable для каждого файла и передать их ExecutorService для обработки в несколькихтемы:

public static void main(String... args){

    ExecutorService pool = Executors.newFixedThreadPool(4); //nbr of active threads

    File dir = new File("/dir/");
    for(File f : dir.listFiles())
    pool.submit(new Runnable() {
         public void run(){
             processImage(f);
        }
    } 
}
1 голос
/ 25 января 2012

Это должно быть относительно легко сделать, и здесь есть много постов, которые касаются многих частей этой программы. Например, проверьте эти предыдущие вопросы:

Программа для получения всех файлов в каталоге на Java

Принимая изображение в качестве входного сигнала, сделайте шкалу серого и затем выведите

Там должно быть более чем достаточно информации, чтобы вы могли начать!

0 голосов
/ 25 января 2012

Единственный «лучший способ», который я могу придумать, - это использовать многопоточный дизайн здесьНапример, каждые 100 изображений должны обрабатываться в отдельном потоке.

0 голосов
/ 25 января 2012

Да, это возможно.Взгляните на java.io.File и попробуйте найти разделы о работе с файлами в Java, чтобы узнать, как получить доступ к каталогу и получить список файлов, которые в нем содержатся.

Если вы ищете кого-то, чтобы написать код для вас, это вряд ли произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...