Functions for Photoshop
Get channel
function GetChannel(name) {
var channel;
try {
channel = doc.channels.getByName(name);
}
catch(err) {
channel = null;
}
return channel;
}
Resize selection
function resizeSelection(horizontal, vertical){
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
var SB = activeDocument.selection.bounds;
var Height = SB[3].value - SB[1].value;
var Width = SB[2].value - SB[0].value;
var onePixH = 100/Height;
var onePixW = 100/Width;
var newWidth = onePixW * horizontal;
var newHeight = onePixH * vertical;
activeDocument.selection.resize( newWidth , newHeight, AnchorPosition.MIDDLECENTER );
app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
}
Save as JPEG
function saveJPEG( doc, saveFile, qty ) {
var saveOptions = new JPEGSaveOptions( );
saveOptions.embedColorProfile = true;
saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
saveOptions.matte = MatteType.NONE;
saveOptions.quality = qty;
doc.saveAs( saveFile, saveOptions, true );
}
saveJPEG( app.activeDocument, new File('~/Desktop/sample.jpg'), 10 );
Save as TIF
function SaveAsTIFF( inFileName, inLZW ) {
var tiffSaveOptions = new TiffSaveOptions();
if ( inLZW ) {
tiffSaveOptions.imageCompression = TIFFEncoding.TIFFLZW;
} else {
tiffSaveOptions.imageCompression = TIFFEncoding.NONE;
}
app.activeDocument.saveAs( File( inFileName ), tiffSaveOptions );
};
Fit image by Xbytor
function fitImage(doc, width, height) {
function cTID(s) { return app.charIDToTypeID(s); };
function sTID(s) { return app.stringIDToTypeID(s); };
app.activeDocument = doc;
var desc = new ActionDescriptor();
desc.putUnitDouble( cTID('Wdth'), cTID('#Pxl'), width );
desc.putUnitDouble( cTID('Hght'), cTID('#Pxl'), height );
var fitId = sTID('3caa3434-cb67-11d1-bc43-0060b0a13dc4');
executeAction(fitId , desc, DialogModes.NO );
};
function main() {
if (app.documents.length == 0) {
alert ("No Open Documents, Script will terminate");
return;
}
var ru = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var doc = app.activeDocument;
try {
var s = prompt("Largest New Dimension (pixels)",
doc.height.value,
"Dimension");
var lrgdim = Number(s);
if (isNaN(lrgdim) || lrgdim < 0) {
alert("Bad dimension specified: " + s);
}
var s = prompt ("New Resolution (ppi)", 300, "Resolution");
var resolution = Number(s);
if (isNaN(resolution) || resolution < 0) {
alert("Bad dimension specified: " + s);
}
doc.resizeImage(undefined, undefined, 72, ResampleMethod.NONE);
fitImage(doc, lrgdim, lrgdim);
doc.resizeImage(undefined, undefined, resolution, ResampleMethod.NONE);
} finally {
app.preferences.rulerUnits = ru;
}
};
main();
Wait for redraw
A helper function for debugging It also helps the user see what is going on. if you turn it off for this example you get a flashing cursor for a number time
function WaitForRedraw()
{
var eventWait = charIDToTypeID("Wait")
var enumRedrawComplete = charIDToTypeID("RdCm")
var typeState = charIDToTypeID("Stte")
var keyState = charIDToTypeID("Stte")
var desc = new ActionDescriptor()
desc.putEnumerated(keyState, typeState, enumRedrawComplete)
executeAction(eventWait, desc, DialogModes.NO)
}
Get snapshot
var doc = app.activeDocument;
Main();
function Main() {
var snapshot = GetSnapshot("Snapshot 1");
}
function GetSnapshot(name) {
var snapshot;
try {
snapshot = doc.historyStates.getByName(name);
}
catch(err) {
snapshot = null;
}
return snapshot;
}
Make snapshot
function makeSnapshot(name) {
try {
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putClass(cTID('SnpS'));
desc1.putReference(cTID('null'), ref1);
var ref2 = new ActionReference();
ref2.putProperty(cTID('HstS'), cTID('CrnH'));
desc1.putReference(cTID('From'), ref2);
desc1.putString(cTID('Nm '), name);
desc1.putEnumerated(cTID('Usng'), cTID('HstS'), cTID('FllD'));
executeAction(cTID('Mk '), desc1);
}
catch(err) {
$.writeln(err.message + ", line: " + err.line);
}
}
