Объединить или "склеить" изображения в java.

Имеется 30 фотографий в формате .png (это фотографии с ресурса api.nasa.gov за месяц). Нужно в java объединить, т.е. "склеить" их в одну картинку вертикально, т.е. одну под другой. Мой код позволяет "склеить" только максимум три фотографии. К сожалению, придумать код, который "склеивает" все тридцать фотографий (а не три) мне не удалось. Если кто-то подскажет, как поправить мой код, буду очень благодарен. Спасибо. Вот мой код:

class JoinedImages {

public static void joinedImages() throws IOException {

// Объединяем все фото в одну картинку

int rows = 3;

int cols = 1;

int chunks = rows * cols;

int chunkWidth, chunkHeight;

int type;

File[] imgFiles = new File("NASA_Photos_Of_Month").listFiles();

// Создаем BufferedImage массив из имеющихся в списке фотографий

BufferedImage[] buffImages = new BufferedImage[chunks];

for (int i = 0; i < chunks; i++) {

assert imgFiles != null;

buffImages[i] = ImageIO.read(imgFiles[i]);

}

type = buffImages[0].getType();

chunkWidth = buffImages[0].getWidth();

chunkHeight = buffImages[0].getHeight();

// Инициализируем finalImg

BufferedImage finalImg = new BufferedImage(chunkWidth * cols, chunkHeight * rows, type);

int num = 0;

for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols; j++) {

finalImg.createGraphics().drawImage(buffImages[num], chunkWidth * j, chunkHeight * i, null);

num++;

}

}

System.out.println("Изображения объединены в папке 'Joined_Images', файл 'Joined_Photos.png'");

ImageIO.write(finalImg, "png", new File("Joined_Images\\Joined_Photos.png"));

}

}

0 ответов

Другие вопросы по тегам