Přechod obrázků

Zadání

Převeďte následující program do paralelní podoby.

obrazek1.jpg, obrazek2.jpg.

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Prechod {
    private static final SimpleDateFormat FORMAT_CASU = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");

    public static void main(String[] args) {
        awh.Image prvni = awh.Image.loadFromFile(args[0]);
        awh.Image posledni = awh.Image.loadFromFile(args[1]);
        String maska = args[2];
        int kroku = args.length == 4 ? Integer.parseInt(args[3]) : 10;

        if ((prvni.getWidth() != posledni.getWidth()) || (prvni.getHeight() != posledni.getHeight())) {
            awh.Sys.die("Obrazky nemaji stejne rozmery.");
        }

        int sirka = prvni.getWidth();
        int vyska = prvni.getHeight();

        long zacatek = System.nanoTime();

        for (int i = 0; i < kroku; i++) {
            awh.Image snimek = awh.Image.createEmpty(sirka, vyska, awh.Color.BLACK);
            for (int y = 0; y < vyska; y++) {
                for (int x = 0; x < sirka; x++) {
                    awh.Color c1 = prvni.getPixel(x, y);
                    awh.Color c2 = posledni.getPixel(x, y);
                    awh.Color nova = awh.Color.fromRgb(
                        (c1.getRed() * (kroku - 1 - i) + c2.getRed() * i) / (kroku - 1),
                        (c1.getGreen() * (kroku - 1 - i) + c2.getGreen() * i) / (kroku - 1),
                        (c1.getBlue() * (kroku - 1 - i) + c2.getBlue() * i) / (kroku - 1)
                    );
                    snimek.setPixel(x, y, nova);
                }
            }
            String soubor = String.format(maska, i);
            snimek.saveToFile(soubor);
            System.out.printf("[%s] Ulozen snimek %s (%3.0f%%)\n",
                FORMAT_CASU.format(Calendar.getInstance().getTime()),
                soubor,
                (100. * (i + 1)) / kroku
            );
        }
        
        long konec = System.nanoTime();
        
        System.out.printf("Vlastni vypocet trval %d ns (%d ms).\n", konec - zacatek, (konec - zacatek) / 1000 / 1000);
    }
}
Licence Creative Commons
Alej.alisma.cz, jejímž autorem je Vojtěch Horký, podléhá licenci
Creative Commons Uveďte autora-Zachovejte licenci 4.0 International.