Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
VideoCreator.java 3.52 KiB
package Visualization;

import MainClasses.Config;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class VideoCreator{

    private static final int MAXIMUM_SIZE = 3000;
    public static File dir = new File("./visualization/series"); // Default
    public static final String[] extensions = new String[]{"jpg", "png"};
    public static final FilenameFilter imageFilter = new FilenameFilter() {
        @Override
        public boolean accept(final File dir, String name) {
            for (final String ext : extensions) {
                if (name.endsWith("." + ext)) {
                    return (true);
                }
            }
            return (false);
        }
    };

    private static void resizeImages(String imagesPath, int maxH, int maxW) throws IOException {
        System.err.println("\nStarting image resizing");

        dir = new File(imagesPath);

        if (dir.isDirectory()) {
            // reads input images and determines maximum required size
            int maxHeight = maxH;
            int maxWidth = maxW;

            if (maxHeight <= 0 || maxWidth <= 0) {
                int counter = 1;
                for (final File f : dir.listFiles(imageFilter)) {
                    BufferedImage inputImage = ImageIO.read(f);
                    if (maxHeight < inputImage.getHeight()) {
                        maxHeight = inputImage.getHeight();
                    }
                    if (maxWidth < inputImage.getWidth()) {
                        maxWidth = inputImage.getWidth();
                    }
                }
            }

            // Needed because video is not playable with bigger sizes, mostly a concern for straight line initialization
            if (maxWidth > MAXIMUM_SIZE) {
                maxWidth = MAXIMUM_SIZE;
            }
            if (maxHeight > MAXIMUM_SIZE) {
                maxHeight = MAXIMUM_SIZE;
            }

            // Resizes all images
            for (final File f : dir.listFiles(imageFilter)) {
                BufferedImage inputImage = ImageIO.read(f);

                // creates output image
                BufferedImage outputImage = new BufferedImage(maxWidth,
                        maxHeight, inputImage.getType());

                // draws input image to the top left corner
                Graphics2D g2d = outputImage.createGraphics();
                g2d.setColor(Config.imageBackground);