simbasounds
5/20/2014 - 3:37 AM

An photoshop batch script for crop & straighten photo from Jeffrey Tranberry

An photoshop batch script for crop & straighten photo from Jeffrey Tranberry

// cropAndStraightenBatch.jsx
// Copyright 2006-2008
// Written by Jeffrey Tranberry
// Photoshop for Geeks Version 2.0

/* 
Description:
This script demonstates how to batch process
a folder of images using the crop and straighten command
*/

// enable double clicking from the 
// Macintosh Finder or the Windows Explorer
#target photoshop

// Make Photoshop the frontmost application
// in case we double clicked the file
app.bringToFront();

/////////////////////////
// SETUP
/////////////////////////

// A list of file extensions to skip, keep them lower case
gFilesToSkip = Array( "db", "xmp", "thm", "txt", "doc", "md0", "tb0", "adobebridgedb", "adobebridgedbt", "bc", "bct" );

/////////////////////////
// MAIN
/////////////////////////

//Make sure there are no open documents
if (app.documents.length > 0){
	alert ("This script requires that there are no open documents to run.");
}else{
	
	// Pops open a dialog for the user to choose the folder of documents to process
	var inputFolder = Folder.selectDialog("Select a folder of documents to process");

	// Pops open a dialog for the user to set the output folder
	var outputFolder = Folder.selectDialog("Select a folder for the output files");

	// Open and process a folder of Images
	OpenFolder();
	
}

/////////////////////////
// FUNCTIONS
/////////////////////////

// Given the a Folder of files, open the files and process them
function OpenFolder() {
        var filesOpened = 0;
        var fileList = inputFolder.getFiles();
        for ( var i = 0; i < fileList.length; i++ ) {
        		   // Make sure all the files in the folder are compatible with PS
                if ( fileList[i] instanceof File && ! fileList[i].hidden && ! IsFileOneOfThese( fileList[i], gFilesToSkip )) {
                        open( fileList[i] );
                        filesOpened++;
                
                	/////////////////////////
					// Put all your processing functions...
					/////////////////////////
					
							// Create a variable to store a reference to
							// the currently active document, which in this
							// case is the parent document we want to extract
							// multiple scanned images from
							var docRef = app.activeDocument;

							// Run the cropAndStraighten function
							// which will rusult in more than one open document
							cropAndStraighten();

							// Close the parent document we originally opened
							docRef.close(SaveOptions.DONOTSAVECHANGES);
					
							// Process all open documents until no documents
							// are left open.
							while (app.documents.length >=1){

								/////////////////////////
								// Put all your processing functions...
								/////////////////////////
								
									// Flatten the document in case the file type we want to save to requires a flat doc
									app.activeDocument.flatten();
								
									//Save as a JPEG to the outputFolder
									var jpegOptions = new JPEGSaveOptions();
									jpegOptions.quality = 10;
									jpegOptions.embedColorProfile = false;
									app.activeDocument.saveAs( File( outputFolder  + "/" + activeDocument.name + ".jpg"), jpegOptions, false);
									
									// Close without saving
									 app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
								
								/////////////////////////
								// ...in the area between these two comments.
								/////////////////////////
							}
                	
					/////////////////////////
					// ...in the area between these two comments.
					/////////////////////////

				}
        }
        return filesOpened;
}

// given a file name and a list of extensions
// determine if this file is in the list of extensions
function IsFileOneOfThese( inFileName, inArrayOfFileExtensions ) {
	var lastDot = inFileName.toString().lastIndexOf( "." );
	if ( lastDot == -1 ) {
		return false;
	}
	var strLength = inFileName.toString().length;
	var extension = inFileName.toString().substr( lastDot + 1, strLength - lastDot );
	extension = extension.toLowerCase();
	for (var i = 0; i < inArrayOfFileExtensions.length; i++ ) {
		if ( extension == inArrayOfFileExtensions[i] ) {
			return true;
		}
	}
	return false;
}

// Crop and Straighten function created
// using the ScriptingListener plug-in
function cropAndStraighten(){
	var id333 = stringIDToTypeID( "CropPhotosAuto0001" );
	executeAction( id333, undefined, DialogModes.NO );
}