symdesign
4/14/2015 - 7:04 AM

Photomerge Automation

A photomerge automation with windows batch file to move JPGs group wise into sub folders


var runphotomergeFromScript = true;

// @includepath "/c/Program Files/Adobe/Adobe Photoshop CC 2014/Presets/Scripts/";
// @include "Photomerge.jsx";
// @show include;

psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = true;
psdOpts.layers = true;


var workFolder = Folder.selectDialog();
var folders = workFolder.getFiles( function( file ) { return file instanceof Folder; } );

for( var i = 0; i < folders.length; i++ ) {
	var folder = folders[i];
	var fList = folder.getFiles( '*.jpg' );

	var filename = folder.toString().substring(folder.toString().lastIndexOf("/") + 1, folder.toString().length);

//	photomerge.alignmentKey   = "Auto";
//	photomerge.alignmentKey   = "Prsp";
	photomerge.alignmentKey   = "cylindrical";
//	photomerge.alignmentKey   = "spherical";
//	photomerge.alignmentKey   = "sceneCollage";
//	photomerge.alignmentKey   = "translation"; // "Reposition" in layout dialog


	photomerge.advancedBlending      = true; // 'Bend Images Together' checkbox in dialog
	photomerge.lensCorrection        = true; // Geometric Distortion Correction'checkbox in dialog
//	photomerge.removeVignette        = true; // 'Vignette Removal' checkbox in dialog

	if( fList.length > 1 ) {
		photomerge.createPanorama(fList,false);
	}

	// The merged doc will be the activeDocument
	// activeDocument.saveAs( new File( fList[0].parent + '/Stitch.psb' ) , psdOpts, true, Extension.LOWERCASE);

//	savePSB(workFolder + '/' + i + '.psb');
//	saveTIFF(workFolder + '/' + i + '.tif');
	saveJPEG(workFolder + '/' + filename + '.jpg', 10);
	activeDocument.close( SaveOptions.DONOTSAVECHANGES );
}

function savePSB(saveFile) {
	function cTID(s) { return app.charIDToTypeID(s); };
	function sTID(s) { return app.stringIDToTypeID(s); };

	var desc19 = new ActionDescriptor();
	var desc20 = new ActionDescriptor();
	desc20.putBoolean( sTID('maximizeCompatibility'), true );
	desc19.putObject( cTID('As  '), cTID('Pht8'), desc20 );
	desc19.putPath( cTID('In  '), new File( saveFile ) );
	desc19.putBoolean( cTID('LwCs'), true );
	executeAction( cTID('save'), desc19, DialogModes.NO );
};

function saveTIFF(saveFile) {
	tiffSaveOptions = new TiffSaveOptions();
	tiffSaveOptions.embedColorProfile = true;
	tiffSaveOptions.alphaChannels = true;
	tiffSaveOptions.layers = true;
	tiffSaveOptions.imageCompression = TIFFEncoding.JPEG;
	tiffSaveOptions.jpegQuality=10;
	activeDocument.saveAs( new File(saveFile) , tiffSaveOptions, true, Extension.LOWERCASE);
}

function saveJPEG(saveFile, jpegQuality) {
	var doc = activeDocument;
	if (doc.bitsPerChannel != BitsPerChannelType.EIGHT) doc.bitsPerChannel = BitsPerChannelType.EIGHT;
	jpgSaveOptions = new JPEGSaveOptions();
	jpgSaveOptions.embedColorProfile = true;
	jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
	jpgSaveOptions.matte = MatteType.NONE;
	jpgSaveOptions.quality = jpegQuality;
	activeDocument.saveAs( new File(saveFile), jpgSaveOptions, true,Extension.LOWERCASE);
}
@echo off

set Counter=0
set FolderNumber=0
set FolderName=0
set Merge=5

set Dir="%~dp0"

for %%f in (*.jpg) do call :p "%%f"
goto :eof

:p
    set /a Counter+=1
    
    set FolderName=%FolderNumber%

    if 1%FolderNumber% lss 100 set FolderName=0%FolderNumber%

    if not exist %Dir%\%FolderName%\ mkdir %Dir%\%FolderName%\
    move %1 %Dir%\%FolderName%\

    if %Counter%==%Merge% (
        set Counter=0
        set /a FolderNumber+=1
    )

goto :eof