PDA

View Full Version : How to automate incremental snapshots from PSDs.


earl
11-17-2005, 04:41 PM
I'm looking for the best way to make a one-click action to make a snapshot of a PSD, which is stored in a specific location and with incremental numbering.

The purpose is to produce a series of images that which show A-Z progress of how an image was made, but without costing much time. I want it mainly for myself, but I also want to share the action with some artists I work with, in order to see how they produce textures.

The end result will be a slideshow that looks something like an OC .wpe playback.

Any specific ideas would be appreciated.

EricChadwick
11-17-2005, 06:51 PM
You can set an Action to play each step after waiting n seconds, might work for you. Use the Actions settings flyout button > Playback Settings > Pause For: setting.

Or maybe just use a freeware timed screengrabber.

earl
11-17-2005, 07:41 PM
Thanks for the reply. I want manual triggering for the action, since there's no need to take screenshots during a long period away from the computer, or when there are no significant changes being made. Freeware screengrabbers aren't going to work because the PSD may be moved around the workspace, minimized, etc. I'd like the images to have a consistent 1:1 ratio with the original.

What I'm more interested in is what actual steps in the action should be used. I don't think it's currently possible in Photoshop, because there is no way to increment the filename of an image on consecutive saves. The Batch process has filenaming options, but that's for a group of different images, not the same image saved multiple times.

Right now, I'm thinking there may be a way to have a simple action that will save the image to a specific location and with a specific name. Then something like a batchfile can look for that filename and rename it to "filename+timestamp.ext"

Can a photoshop action launch external programs?

EricChadwick
11-17-2005, 08:40 PM
Well then you'll want something like Scripting. Look it up in the help, I think there are some specific PDFs that ship with PS.

I've used SnagIt before to do something similar. I set it to grab from the clipboard on a keypress, it auto-increments the file names for me. I just had to Ctrl-A and Ctrl-Shift-C before invoking SnagIt, so the clipboard was populated with the latest. That could easily be an Action. If I had used a JavaScript, then I guess I could have had it call that Action then call SnagIt, so it would be just one keypress.

Let me know how it goes, sounds like a neat idea.

berniebernie
11-17-2005, 11:52 PM
Very feasible using scripting:
http://www.ps-scripts.com/bb/

earl
11-18-2005, 05:46 AM
And a few hours later, I have something that works with just a few lines of script. Thanks for that link, I haven't really used scripting before. It reads the path from the currently open PSD which must be saved already, and then saves JPGs to that location with a timestamp in the filename, and looks like this:

filename_MMDD-HHhMMmSS.jpg
greenbridge_1118-00h22m06.jpg
greenbridge_1118-00h23m12.jpg
greenbridge_1118-00h23m38.jpg

It saves as a normal JPG with a quality level of 6. If you want to try it, just copy the code below and save it to a txt file, then rename the file to *.js and run it from File > Scripts > Browse...

If you decide to use it, it can go into Photoshop CS\Presets\Scripts. Restart PS and it will appear in the scripts menu. That's what I've got set up and it's working exactly as I hoped.



// Program Name: consecutive JPG snapshots from a PSD
//
//
// Purpose: This JavaScript will save JPG snapsots of the current PSD image
// to the same location where the PSD is saved. Each image
// saved will have a timestamp appended on the filename
// in the format "filename_MMDD-00h00m00.jpg"
//
// Requirements: Must have a document open and saved to a folder.


var CurrentFolder = activeDocument.path;
var docRef = activeDocument;
var imgName = docRef.name;
imgName = imgName.substr(0,imgName.length-4); // removes psd extension
Today = new Date(); // gets today's date and time
month = Today.getMonth()+1;

// adds a 0 in front of months from 1-9, so all months use two digits.

if (month < 10) {
month = "0" + month;
}
else
month = month;

// gets date value and time value in hh:mm:ss format then rewrites time as 00h00m00

date = Today.getDate();
time = Today.toLocaleTimeString();
time = time.substr(0,time.length-6) + "h" + time.substr(time.length-5,2) + "m" + time.substr(time.length-2,2);

saveFile = new File(CurrentFolder + "/" + imgName + "_" + month + date + "-" + time);

saveOptions = new JPEGSaveOptions();
saveOptions.embedColorProfile = true;
saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
saveOptions.matte = MatteType.NONE;
saveOptions.quality = 6; // quality level, min 1 max 10.
docRef.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);

// alert(imgName + "_" + month + date + "-" + time + ".jpg saved");

CGTalk Moderation
11-18-2005, 05:46 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.