Как передать изображения в цикл?

301
24 мая 2017, 05:11

Доброго времени суток)

Нужно загрузить 6 изображений и передать их в цикл. Для загрузки используется класс LoadImage.

public class Main
{
    public static void main(String args[]) throws IOException 
    {
        IRExamenator examenator = new IRExamenator();
        //тут надо считать картинки и передать их в цикл ниже
        for (String path : args)
        {
        }

Класс для загрузки изображений.

public class LoadImage {
    public static BufferedImage image(String path) throws Exception{
        return ImageIO.read(new File(path));
    }
}

То как загрузить изображение я примерно понимаю

BufferedImage img = LoadImage.image("Images\\1.bmp");

Но как потом их передать в этот массив args нет((

Подскажите пожалуйста.

Редактирую:

public class Main
{
    public static void main(String args[]) throws IOException //too many code under try-catch for non-handling situation (always exit on exception)
    {
        IRExamenator examenator = new IRExamenator();
        //тут надо считать картинки и передать их в цикл ниже
        String[] path = {
                "etalons/etalon-forest-1.png",
                "etalons/etalon-forest-2.png",
                "etalons/etalon-ground-1.png",
                "etalons/etalon-ground-2.png",
                "etalons/etalon-water-1.png",
                "etalons/etalon-water-2.png"
         };
        BufferedImage[] images = new BufferedImage[path.length];
        for (int i = 0; i < path.length; i++) {
            images[i] = ImageIO.read(new File(path[i]));
        }
        for (String path : images)
        {
            int[][] mas = IRUtil.imageToMatrix(IRUtil.loadImage(path)); // лоадИмейдж принимает путь к картинке
}
Answer 1

Я вижу два варианта:

  1. Вы знаете пути всех шести изображений на этапе компиляции. Тогда просто вызываете метод ImageIO.read для каждого пути, получаете массив изображений, что с ними дальше делать уже вам решать.

    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    public class Main {
        public static void main(String[] args) throws IOException {
            String[] pathes = {
                    "path1/image1.png",
                    "path2/image2.jpg",
                     ...
             };
            BufferedImage[] images = new BufferedImage[pathes.length];
            for (int i = 0; i < pathes.length; i++) {
                images[i] = ImageIO.read(new File(pathes[i]));
            }
            // далее делаете с массивом images что хотите
        }
    }
    
  2. На этапе компиляции пути изображений неизвестны. Можно считывать их из стандартного входа, либо надеяться что пользователь передаст их аргументами командной строки, и они окажутся в массиве args (Это аргумент метода main). Тогда надо в предыдущем решении изменить инициализацию переменной pathes:

    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    public class Main {
        public static void main(String[] args) throws IOException {
            String[] pathes = args;
            BufferedImage[] images = new BufferedImage[pathes.length];
            for (int i = 0; i < pathes.length; i++) {
                images[i] = ImageIO.read(new File(pathes[i]));
            }
            // далее делаете с массивом images что хотите
        }
    }
    

Замечание: в коде выше не используется класс LoadImage, мне кажется, что он бесполезен, по сути он является обёрткой над методом ImageIO.read.

READ ALSO
cannot access class IDEA

cannot access class IDEA

Здравствуйте все, такая есть проблема:

273
Android VPN подключение

Android VPN подключение

Не могу создать VPN подключениеЕсть адрес сервера через который нужно создать подключение

281
Вылетает приложение ExceptionCode=0xc0000005

Вылетает приложение ExceptionCode=0xc0000005

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

268
Действия по конкретным словам в AutoCompleteTextView

Действия по конкретным словам в AutoCompleteTextView

Есть fragment на ней два AutoCompleteTextView и Button, у меня AutoCompleteTextView заполнен из текстовых ресурсов, но для примера я напишу так допустим он заполнен массивом...

212