Photoshop Script: Bilder in Streifen schneiden und zusammensetzen

Aus den angegebenen Bilder schneidet dieses Script einzelne Streifen, abhängig von der Bildbreite und Anzahl der Bilder, und setzt diese Streifen als ein Bild zusammen.

Ein Bild sagt mehr als tausend Worte:
– Bild –

var picSourcePath = "C:\\testbilder\\";

// Achtung: Porträt-Format!
var picWidth = 2448;
var picHeight = 3264;

// Photoshop-Einstellungen sichern
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
var startDisplayDialogs = app.displayDialogs;

// Dialoge verbergen und Pixel als Einheit einstellen
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
app.displayDialogs = DialogModes.NO;

// Liste aller Dateien und Ordner erstellen
var picFolder = Folder(picSourcePath);
var fileList = picFolder.getFiles();

// Anzahl der Dateien und Breite des Streifens berechnen
var picCnt = fileList.length;
var stripWidth = picHeight / picCnt;

// Pruefung ob auch Dateien und Ordner vorhanden sind
if (picSourcePath != null) {
    
	// Quellbilder in Schleife oeffnen
	for (var i=0; i<picCnt; i++) {

		// Nur Dateien (und keine Ordner) oeffnen
		if (fileList[i] instanceof File) {
			open(fileList[i]);

			// Selektionsrahmen fürs Einfügen des vorherigen Streiens
			selRegion = Array(Array(0, 0),
								Array(picWidth, 0),
								Array(picWidth, stripWidth*i),
								Array(0, stripWidth*i),
								Array(0, 0));

			// Selektion setzen			
			activeDocument.selection.select(selRegion);
								
			// Beim ersten Bild kann noch nichts von vorherigen Bilder eingefügt werden
			if (i != 0) {
				activeDocument.paste();
			}
			
			// Selektion entfernen
			activeDocument.selection.deselect();	

			// Auf Hintergrundebene zusammenfügen
			activeDocument.flatten();

			// Selektionsrahmen für Kopieren
			selRegion = Array(Array(0, 0),
								Array(picWidth, 0),
								Array(picWidth, stripWidth*(i+1)),
								Array(0, stripWidth*(i+1)),
								Array(0, 0));

			// Selektion setzen			
			activeDocument.selection.select(selRegion);

			// Selektion kopieren
			activeDocument.selection.copy();	// true geht nicht !?!?!
			
			// Bis auf das letzte Bild alle schließen (ohne Nachfrage)
			if (i < picCnt-1) {
				activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			}
		}
	}
	
	// Selektion entfernen und Bild drehen
	activeDocument.selection.deselect();
	activeDocument.rotateCanvas(-90);
	
}

// Photoshop-Einstellungen zuruecksetzen
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;