Copy link to clipboard
Copied
So I am making a stop motion animation using Photoshop. Earlier when I had to edit a lot of photos I've used an action to speed up my process of saving multiple images, but that is when you work with multiple photos. Now I am working with a single file, and I want to make some adjustments and speed up my process of constantly clicking save as ect since I am working with a lot of sequences. I thought when I click the SAVE AS A COPY it will make a new file when I save it, but it just overwrites the previous one. Does anyone know how to overcome this? Thanks
Copy link to clipboard
Copied
So, are you looking for a "sequential save"?
First save using standard save/format:
myFile.psd
Then, subsequent sequential saves using a script to the same folder or a sub-folder etc:
myFile-1.jpg
myFile-2.jpg
myFile-3.jpg
etc?
The myFile.psd or other "parent" doc would stay open onscreen in whatever layer visibility state it is at. Then each sequential save would be a "snapshot" of the current visibility when saving.
Similar in a way to using Layer Comps and the Layer Comps to files script.
Copy link to clipboard
Copied
I am doing it manually now, will try this later, but I really don't know anything about scripting in Photosop.
Copy link to clipboard
Copied
You don't need to know how to write a script, I'm just trying to clearly understand your requirements, an existing script may do what you need and or be easily modified.
The more concise info and file formats, save options, locations etc. the better!
Copy link to clipboard
Copied
Oh, ok. I am making an animation using one photo, for example, a black circle on a white background and that is the first sequence in an animation. Then I want to inflate that circle a bit with LIQUIFY option, so I inflate it and that is my second sequence. Inflate it a little bit more, that will be the third sequence. To make an animation I need all those files to be for example PHOTO1, PHOTO2, PHOTO3... and there will be like 50 sequences and 50 files to make an animation. I want to save some time of clicking CTL+S all the time and manually rename my files, and to make an action that will do that in just one click. All the files are JPGs, everything needs to be on one folder, and to save it with the standard dialog box with maximum settings.
Copy link to clipboard
Copied
Try this script for starters, you can assign a custom keyboard shortcut to it, or insert it into an action and use an F-key shortcut:
/* https://community.adobe.com/t5/photoshop/automate-save-as-or-export-with-sequential-file-names/m-p/9003836#M88140 */
// Stephen_A_Marsh
// 05-01-2021
// Additional options & menu add
// Rombout Versluijs
// 14-01-2021
// Usage
// - Because its being added to menu it can be hotkeyed
// - useFileName > true adds filename as a prefix
// - jpegQuality > sets save quality . range 1-12
// - formatOption > 1 Progressive
// 2 Optimized Baseline
// 3 Standard Baseline
/*
@@@BUILDINFO@@@ Quick Export as JPG Incremental.jsx 0.0.0.6
*/
/*
// BEGIN__HARVEST_EXCEPTION_ZSTRING
/*
<javascriptresource>
<name>$$$/JavaScripts/QuickExportAsJPGIncremental/Menu=Quick Export as JPG Incremental...</name>
<category>scriptexport</category>
<menu>export</menu>
<enableinfo>true</enableinfo>
</javascriptresource>
// END__HARVEST_EXCEPTION_ZSTRING
*/
// alert(documents.length)
#target photoshop
var useFileName = true; // filename as prefix: true - false
var jpegQuality = 10; // 1-12
var formatOption = 3; // 1-3
/* Start Open/Saved Document Error Check - Part A: Try */
savedDoc();
function savedDoc() {
// try {
app.activeDocument.path;
/* Finish Open/Saved Document Error Check - Part A: Try */
/* Main Code Start */
// https://forums.adobe.com/message/4453915#4453915
main();
function main() {
if (!documents.length) return;
var Name = app.activeDocument.name.replace(/\.[^\.]+$/, '');
var savePath = activeDocument.path;
var fileList = [];
if (useFileName) {
var fileList = savePath.getFiles(Name + "*.jpg").sort().reverse();
} else {
var fileList = savePath.getFiles("*.jpg").sort().reverse();
var filtered = [];
for (i in fileList) {
var name = String(fileList[i]).split("/").pop(); // Get filename
name = name.slice(0, name.length - 4); // Split extension from name
// alert(name+" "+!isNaN(name))
// https://stackoverflow.com/questions/651563/getting-the-last-element-of-a-split-string-array
if (!isNaN(name)) filtered.push(name); // Check if name is a number or not > fullname needs to be numbers
}
}
var Suffix = 0;
if (fileList.length) {
if (useFileName) {
Suffix = fileList[0].name.replace(/\.[^\.]+$/, '').match(/\d+$/); // Fix for mix of characters & numbers
Suffix = Number(String(Suffix).slice(String(Suffix).length - 1, String(Suffix).length)); // Fix for Windows
// alert((fileList[0].name).slice(25,26))
// alert((fileList[0].name.replace(/\.[^\.]+$/, '').match(/\d+$/)).slice(fileList[0].name.length-5,fileList[0].name.length-4))
// alert((fileList[0].name.replace(/\.[^\.]+$/, '').match(/\d+$/)).slice(fileList[0].name.length-1,fileList[0].name.length))
// alert((fileList[0].name).slice(fileList[0].name.length-1,fileList[0].name.length))
// Suffix = Number(fileList[0].name.replace(/\.[^\.]+$/, '').match(/\d+$/)); // strips numbers when mixed
// Suffix = Number(fileList[0].name.match(/\d+$/)); // return true name even when mixed numbers and characters
} else if ((!filtered[0] === undefined) || filtered[0]) {
Suffix = Number(filtered[0].replace(/\.[^\.]+$/, '').match(/\d+$/));
}
}
Suffix = zeroPad(Suffix + 1, 3);
Name = useFileName ? (Name + "_") : "";
var saveFile = File(savePath + "/" + Name + Suffix + ".jpg");
SaveJPEG(saveFile, jpegQuality, formatOption);
}
function SaveJPEG(saveFile, jpegQuality, formatOption) {
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.embedColorProfile = true;
if (formatOption === 1) {
jpgSaveOptions.formatOptions = FormatOptions.PROGRESSIVE;
jpgSaveOptions.scans = 3;
} else if (formatOption === 2) {
jpgSaveOptions.formatOptions = FormatOptions.OPTIMIZEDBASELINE;
} else {
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
}
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = Number(jpegQuality);
activeDocument.saveAs(saveFile, jpgSaveOptions, true, Extension.LOWERCASE);
}
function zeroPad(n, s) {
n = n.toString();
while (n.length < s) n = '0' + n;
return n;
}
/* Main Code Finish */
// }
/* Start Open/Saved Document Error Check - Part B: Catch */
// catch (err) {
// alert(err)
// // alert("An image must be open and saved before running this script!");
// }
}
/* Finish Open/Saved Document Error Check - Part B: Catch */
Downloading and Installing Adobe Scripts
Get ready! An upgraded Adobe Community experience is coming in January.
Learn more