Copy link to clipboard
Copied
Hello, I'm having issues with Image Processing -> Scripts. I record an action script for watermarking photos. I saved the script and use it several times a day for work. However, every time there is a major update with Photoshop the script for watermarking that I made disappears and I have to remake it every single time. Is there a way to save scripts so that they are not lost with every single Photoshop update?
Once you put the actions in a set you need to save them as a preset. Then you can either load them or import them, as JJ mentioned.
Copy link to clipboard
Copied
If you are talking about actions. Where you record your steps, as opposed to scripts, where you write code, then you need to save the actions to an action set. That way you can load them, when you install a new version of PS.
Copy link to clipboard
Copied
Chuck, yes these are Actions. I first create a new Action set, I'll name it something unqiue. Then I'll create a new action, name it 'watermark', under the newly created action set. Do a series of actions and hit save. Then under File -> Scripts -> Image Processor, select the folders with the images I want watermarked, select how I want it saved, and select the newly created action from the new action set, click run and I'm off to the races. I use this process for work about 1-4 times daily. So I know that it works. However, everytime there is a major PS update my saved actions and action sets, are all missing, and I have to recreate them... everytime. This is about the 7th or 8th time I've had to remake my watermark actions. What I'm looking for is a way to export these acitons, preserve and save them, have them live somewhere on my computer in a file and import them to PS after the next major update erases my premade actions.
Copy link to clipboard
Copied
When you install a new version of Photoshop the first time you use it you should ask If you if want yo migrate old Photoshop version stuff. If you doe you Action Palette should be migrated. Your Actions should be there. However if you have to reset your Preferences you may loose your Actions Palette setup so you should always save you Action Sets to you own private Actions folder so you can load the back into the Actions palette should you loose them. You can re migrate your Action Palette but if you have made updates you better off loading them from your Actions folder.
Copy link to clipboard
Copied
Install Your scripts in you own scripts folder then link all photoshop versions installed scripts folder to your script folder. That way you only need to maintain a single copy of your scripts. Actions are a different story. You should always save your Actions sets into your own private action folder and also load them into the actions palette from your Action folder. However, your actions in the Actions Palette are in your UserID Photoshop Version's Preferences folder. You can migrate these to new Photoshop versions. however you have the keep them in sync yourself Adobe doe not keep old Photoshop versions in sync.
Here is my Watermak script PlaceWatermark.jsx you cahe the vars to customize it.
/* ==========================================================
// 2017 John J. McAssey (JJMack)
// ======================================================= */
// This script is supplied as is. It is provided as freeware.
// The author accepts no liability for any problems arising from its use.
/*
<javascriptresource>
<about>$$$/JavaScripts/PlaceWatermark/About=JJMack's PlaceWatermark ^r^rCopyright 2017 Mouseprints.net^r^rPhotoshop Script^rCustomize using first four var</about>
<category>JJMack's Script</category>
<enableinfo>true</enableinfo>
</javascriptresource>
*/
#target photoshop;
app.bringToFront();
var logoFile = "~/Desktop/JJMack.png"; // Watermark file should be large for resize down works better than up
var LogoSize = 10; // percent of document height to resize Watermark to
var LogoMargin = 1; // percent of Document height the Watermark should have as a margin
var BottomLetf = false; // false = Bottom Right true Bottom Left
//placeWatermark(logoFile, LogoSize, LogoMargin); // Place Watermark into the bottom of the document
if (documents.length) app.activeDocument.suspendHistory('placeWatermark','placeWatermark(logoFile,LogoSize,LogoMargin)' );
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function placeWatermark(Image,Size,Margin){
if(!documents.length) return; // if no document return
var fileObj = new File(Image); // the passed file
if(!fileObj.exists){ // If file does not exits tell user
alert(fileObj.name + " does not exist!"); // Alert User
return; // return
}
try{
var doc = app.activeDocument; // set Doc object to active document
app.displayDialogs = DialogModes.NO; // Dialog off
var strtRulerUnits = app.preferences.rulerUnits; // Save Users ruler units
var strtTypeUnits = app.preferences.typeUnits; // Save Users Type units
app.preferences.rulerUnits = Units.PIXELS; // work with pixels
app.preferences.typeUnits = TypeUnits.PIXELS; // work with pixels
var layers = app.activeDocument.layers; // get layers
app.activeDocument.activeLayer = layers[0]; // Target Top Layer
placeFile(fileObj); // Place in file the Watermark png file
activeDocument.activeLayer.resize(100 ,100,AnchorPosition.MIDDLECENTER); // Insure Place did not scale layer
var SB = activeDocument.activeLayer.bounds; // get layers bounds
var layerHeight = SB[3] - SB[1]; // get layers height
var resizePercent = (100/layerHeight)*(Size/100*doc.height.value); // Percent to resize by
activeDocument.activeLayer.resize(resizePercent ,resizePercent,AnchorPosition.MIDDLECENTER); // Resize width and height by percentage
SB = activeDocument.activeLayer.bounds; // get resized layers bounds
activeDocument.activeLayer.translate(-SB[0].value,-SB[1].value); // Move resized layer to top left canvas corner
var LayerWidth = (SB[2].value - SB[0].value); // get resized layers width
var LayerHeight = (SB[3].value - SB[1].value); // get resized layers height
marginSize = Margin/100*doc.height.value; // Margin size
// move resized watermark into the document lower right corner with some margin or lower left
if ( BottomLetf) {activeDocument.activeLayer.translate(marginSize,( doc.height.value -marginSize - LayerHeight));}
else {activeDocument.activeLayer.translate((doc.width.value -marginSize - LayerWidth),( doc.height.value -marginSize - LayerHeight));}
}
catch(e) { alert(e + ': on line ' + e.line); } // inform user of error
finally{
app.preferences.rulerUnits = strtRulerUnits; // Restore user ruler units
app.preferences.typeUnits = strtTypeUnits; // Restore user type units
};
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function placeFile(placeFile) {
var desc21 = new ActionDescriptor();
desc21.putPath( charIDToTypeID('null'), new File(placeFile) );
desc21.putEnumerated( charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID('Qcsa') );
var desc22 = new ActionDescriptor();
desc22.putUnitDouble( charIDToTypeID('Hrzn'), charIDToTypeID('#Pxl'), 0.000000 );
desc22.putUnitDouble( charIDToTypeID('Vrtc'), charIDToTypeID('#Pxl'), 0.000000 );
desc21.putObject( charIDToTypeID('Ofst'), charIDToTypeID('Ofst'), desc22 );
executeAction( charIDToTypeID('Plc '), desc21, DialogModes.NO );
};
Copy link to clipboard
Copied
Once you put the actions in a set you need to save them as a preset. Then you can either load them or import them, as JJ mentioned.