
Stephen Marsh
Community Expert
Stephen Marsh
Community Expert
Activity
Community Expert
in Photoshop ecosystem Discussions
Mar 10, 2025
05:02 AM
1 Upvote
Mar 10, 2025
05:02 AM
1 Upvote
For context, my work requires me to manually open a large amount of photos
By @noah_7511
Opening 170 files at the same time isn't a great workflow. If you must do this, you might find the following script to be useful:
https://community.adobe.com/t5/photoshop-ecosystem-discussions/scripts-to-save-amp-restore-photoshop-sessions/m-p/14239969#U14946306
Depending on workflow and edits, if all of your images are in a single folder, a script might be better at opening them while keeping track of the next file/s to open.
https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-to-open-a-number-of-images-but-one-at-a-time/m-p/13804564#U15090907
P.S. Do you even need to open the files into Photoshop? Are they all in the same folder? Could Adobe Bridge be used to select and copy the files rather than opening them in Photoshop?
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 10, 2025
02:23 AM
1 Upvote
Mar 10, 2025
02:23 AM
1 Upvote
I would use Camera Raw to change them but it doesn't live preview layers below the current one...
By @Oneechan69
How about selecting the layers and converting them to a smart object, then using the Camera Raw filter as a smart filter.
... View more
Mar 09, 2025
05:26 PM
2 Upvotes
Applying to a non-existent dataset will return [{}] in the result.
If you know the name of the dataset, you can determine whether it succeeded or was ignored by trying to apply it. In other words, it is possible to know indirectly whether the dataset exists or not.
If it succeeds, the result will look like this.
[
{
"_obj": "apply",
"_target": [
{
"_ref": "dataSetClass",
"_name": "set 1"
}
]
}
]
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 09, 2025
09:05 AM
2 Upvotes
Mar 09, 2025
09:05 AM
2 Upvotes
the spot color layer image will disappear,
No such thing (in Photoshop, so far); spot channels are Channels, not Layers.
Could you please post screenshots with the pertinent Panels (Toolbar, Layers, Channels, Options Bar, …) visible?
... View more
Mar 09, 2025
07:25 AM
Thank you for your help, thank you
... View more
Mar 08, 2025
07:45 PM
Works perfectly, I use this quite frequently, Thanks!
By @JesseTomi
You're welcome!
As a regular user of the script, do you have any suggestions or requests?
... View more
Mar 08, 2025
06:37 PM
Thank you it works!
By @Christian37649906skks
You're welcome and thank you for taking the time to post feedback!
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 08, 2025
06:24 PM
1 Upvote
Mar 08, 2025
06:24 PM
1 Upvote
@Stephen Marsh Thank you so much! I replaced those 5 lines and it has fixed part of the problem. The Glow Size and Glow Brightness parameters are now being correctly randomized. Unfortunately, the color/RGB values still aren't. Do you know what could be causing this? Is it a CharID to StringID issue or something else?
By @ugonnaa21431338
Here is my code:
var neonGlowRandomSize = Math.floor(Math.random() * 49) - 24; // Range: -24 to 24;
var neonGlowRandomBrightness = Math.floor(Math.random() * 51); // Range: 0-50;
var neonGlowRandomRed = Math.floor(Math.random() * 256);
var neonGlowRandomGreen = Math.floor(Math.random() * 256);
var neonGlowRandomBlue = Math.floor(Math.random() * 256);
applyNeonGlowFilter(neonGlowRandomSize, neonGlowRandomBrightness, neonGlowRandomRed, neonGlowRandomGreen, neonGlowRandomBlue);
function applyNeonGlowFilter(size, brightness, red, green, blue) {
var c2t = function (s) {
return app.charIDToTypeID(s);
};
var s2t = function (s) {
return app.stringIDToTypeID(s);
};
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
descriptor.putEnumerated(c2t("GEfk"), c2t("GEft"), s2t("neonGlow"));
descriptor.putInteger(s2t("size"), size);
descriptor.putInteger(s2t("brightness"), brightness);
descriptor2.putDouble(s2t("red"), red);
descriptor2.putDouble(s2t("grain"), green);
descriptor2.putDouble(s2t("blue"), blue);
descriptor.putObject(s2t("color"), s2t("RGBColor"), descriptor2);
executeAction(c2t("GEfc"), descriptor, DialogModes.NO);
}
Edit: Sorry, I forgot to tell you to update from:
descriptor.putObject(s2t("Clr "), s2t("RGBC"), colorDescriptor);
to:
descriptor.putObject(s2t("color"), s2t("RGBC"), colorDescriptor);
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 08, 2025
04:50 AM
1 Upvote
Mar 08, 2025
04:50 AM
1 Upvote
You seem to be talking about Premiere Pro, so why post on the Photoshop Forum?
... View more
Mar 08, 2025
03:01 AM
Here's a slightly different take on the previous script, this one leverages colour range to load all pure black pixels as a selection and then compares the selection width to the document width. If both match, then the file is logged as possibly containing a black row. As with the previous code, this isn't perfect and there may be cases where false positives are flagged.
/*
Log Files With Black Full Width Line to Text File Slower.jsx
Stephen Marsh
v1.0 - 8th March 2025
https://community.adobe.com/t5/photoshop-ecosystem-discussions/black-horizontal-line-across-the-image-after-save-to-tif/m-p/15195817
*/
#target photoshop
// Open dialog to select files
var theFiles = File.openDialog("Select files to check for full width 0r0g0b pixels", true);
if (theFiles) {
processFiles(theFiles);
} else {
alert("No files selected.");
}
// Function to check histogram for 0r0g0b
function checkHistogramForBlack(doc) {
var histo = doc.histogram;
return histo[0] > 0;
}
function selectColorRange(fuzziness, luminance, a, b, luminance2, a2, b2, colorModel) {
var s2t = function (s) {
return app.stringIDToTypeID(s);
};
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
var descriptor3 = new ActionDescriptor();
descriptor.putInteger(s2t("fuzziness"), fuzziness);
descriptor2.putDouble(s2t("luminance"), luminance);
descriptor2.putDouble(s2t("a"), a);
descriptor2.putDouble(s2t("b"), b);
descriptor.putObject(s2t("minimum"), s2t("labColor"), descriptor2);
descriptor3.putDouble(s2t("luminance"), luminance2);
descriptor3.putDouble(s2t("a"), a2);
descriptor3.putDouble(s2t("b"), b2);
descriptor.putObject(s2t("maximum"), s2t("labColor"), descriptor3);
descriptor.putInteger(s2t("colorModel"), colorModel);
executeAction(s2t("colorRange"), descriptor, DialogModes.NO);
}
function processFiles(theFiles) {
var resultFile = new File(Folder.desktop + "/BlackPixelsCheckResults.txt");
resultFile.open("w");
resultFile.writeln("Files possibly containing full width 0r0g0b pixels:\n");
// Counter for files with 0r0g0b pixels
var blackFilesCount = 0;
// Loop through files
for (var i = 0; i < theFiles.length; i++) {
var theFile = theFiles[i];
var doc = app.open(theFile);
selectColorRange(0, 0, 0, 0, 0, 0, 0, 0);
var selectionBounds = activeDocument.selection.bounds;
var selectionWidth = selectionBounds[2].as("px") - selectionBounds[0].as("px");
if (app.activeDocument.width.as("px") === selectionWidth) {
resultFile.writeln(theFile.fsName);
blackFilesCount++; // Increment counter when 0r0g0b pixels are found
}
doc.close(SaveOptions.DONOTSAVECHANGES);
}
// End of script notification
resultFile.close();
alert("Processing complete!\n" + "Total files checked: " + theFiles.length + "\n" +
"Files with possible full width black pixels: " + blackFilesCount + "\n" +
"Results saved to: " + resultFile.fsName);
resultFile.execute();
}
... View more
Mar 07, 2025
08:35 PM
@William35585738b0s9
You’re welcome! The official guide could use more examples, I think that they tried to keep it simple:
https://helpx.adobe.com/au/photoshop/using/creating-data-driven-graphics.html
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 07, 2025
05:49 PM
2 Upvotes
Mar 07, 2025
05:49 PM
2 Upvotes
A team effort then!
... View more
Mar 07, 2025
03:17 PM
@anthony_8099
It works for me. Try downloading the full archive:
https://github.com/MarshySwamp/JJMack-Archive/
... View more
Mar 07, 2025
11:25 AM
I know this is an old thread, but this was the fix for me - I was changing the file name when I recorded my actions. Just re-recorded leaving the file name untouched and now when I run the action, it populates with the name of whatever the open document is! Thank you!
... View more
Mar 07, 2025
05:14 AM
Photoshop Firefly couldn't create abusive AI content if it wanted to - it's just incredibly bad at it (the results would be laughable at least). Basically any Stable Diffusion model out there blows Firefly out of the water. Where Photoshop excels is easy editing of details and the censorship seriously cripples that advantage.
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 07, 2025
04:30 AM
1 Upvote
Mar 07, 2025
04:30 AM
1 Upvote
@jasper_7571
We need to generate these files programmatically without opening Photoshop.
I can only comment on ExtendScript/JavaScript. As the scripting host environment, Photoshop has to be open to execute the script.
The creation of a path from a selection created from an alpha channel is certainly possible, however, the quality of the path is another story.
Same for saving as a Photoshop EPS, that is easy enough.
Is there a reason why you need an old-school clipping path and EPS file? Why can't you use raster transparency and a modern file format such as PSD or PDF?
Here's an example script for creating paths from alphas:
https://community.adobe.com/t5/photoshop-ecosystem-discussions/script-get-pathpoint-from-channel-selection/m-p/13968783
You can use DOM code to set a path as a clipping path:
https://theiviaxx.github.io/photoshop-docs/Photoshop/PathItem/makeClippingPath.html
Or you can use AM code:
setClippingPath(2);
function setClippingPath(flatness) {
var s2t = function (s) {
return app.stringIDToTypeID(s);
};
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
var reference = new ActionReference();
var reference2 = new ActionReference();
reference.putProperty( s2t( "path" ), s2t( "clippingPath" ));
descriptor.putReference( s2t( "null" ), reference );
reference2.putEnumerated( s2t( "path" ), s2t( "ordinal" ), s2t( "targetEnum" ));
descriptor2.putReference( s2t( "path" ), reference2 );
descriptor2.putDouble( s2t( "flatness" ), flatness );
descriptor.putObject( s2t( "to" ), s2t( "clippingPathEPS" ), descriptor2 );
executeAction( s2t( "set" ), descriptor, DialogModes.NO );
}
... View more
Mar 06, 2025
03:50 PM
Put all your photos into a folder and run adobe bridge, make an export preset of the resolution you need and the format you need. The printer doesnt want them under 1mb, he wants them at least 1mb (ideally, not a requirement). Hes trying to get you the best print you can get - so basically you want to give him high resolution images and you can make them all the proper resolution you need with adobe bridge
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 06, 2025
12:59 PM
1 Upvote
Mar 06, 2025
12:59 PM
1 Upvote
does anyone know what charIDToTypeID( "LwCs" ) and charIDToTypeID( "DocI" ) refere to in terms of actions or gui?
By @gerardoc50494125
If TypeID codes are the same as StringID codes, then:
charIDToTypeID( "LwCs" ) = 'lowerCase'
charIDToTypeID( "DocI” ) = 'documentID'
... View more
Mar 06, 2025
10:33 AM
So I thought I was having an issue, but then remebered that it wont ask you till you are out saving it... File>Save for the web> Save then what you see in my screen shot.
... View more
Mar 06, 2025
08:45 AM
Hi, did you look at the help link and try the script? You install the script as noted and it opens the folder that your active document is inside.
... View more
Mar 06, 2025
07:26 AM
Any update on this? Will the user be able to select a color for the border of the selected thumbanil or mask? Makes no sense that the border is black on a layer mask than can be all or mostly the same color. Again it wasn't like this on previous versions of PS (at least on Intel Macs)
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 06, 2025
04:32 AM
1 Upvote
Mar 06, 2025
04:32 AM
1 Upvote
were you ever able to resolve this? Everywhere online where this issue comes up, no one has been able to post a solution.
Automatically replacing Smart Object content and saving copies off of the containing file seems to have come up and been addressed again and again …
Maybe it’s not that no one »has been able to post a solution« but that you did not come across those threads.
If you have a specific scenario where you want to automate such a process please provide sample files and outline the output-needs.
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 05, 2025
11:18 PM
1 Upvote
Mar 05, 2025
11:18 PM
1 Upvote
I do apologize, I had overlooked the psd in the original post.
// 2025, use it at your own risk;
if (app.documents.length > 0) {
if (hasLayerMask () == true) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("Chnl"), charIDToTypeID("Chnl"), charIDToTypeID("Msk "));
desc.putReference(charIDToTypeID("null"), ref);
desc.putBoolean(charIDToTypeID("MkVs"), false );
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO );
// load transparency;
var desc5 = new ActionDescriptor();
var ref1 = new ActionReference();
var idchannel = stringIDToTypeID( "channel" );
var idselection = stringIDToTypeID( "selection" );
ref1.putProperty( idchannel, idselection );
desc5.putReference( stringIDToTypeID( "null" ), ref1 );
var ref2 = new ActionReference();
ref2.putEnumerated( idchannel, idchannel, stringIDToTypeID( "transparencyEnum" ) );
desc5.putReference( stringIDToTypeID( "to" ), ref2 );
executeAction( stringIDToTypeID( "set" ), desc5, DialogModes.NO );
// load layer mask;
var desc7 = new ActionDescriptor();
var ref3 = new ActionReference();
ref3.putEnumerated( idchannel, stringIDToTypeID( "ordinal" ), stringIDToTypeID( "targetEnum" ) );
desc7.putReference( stringIDToTypeID( "null" ), ref3 );
var ref4 = new ActionReference();
ref4.putProperty( idchannel, idselection );
desc7.putReference( stringIDToTypeID( "with" ), ref4 );
executeAction( stringIDToTypeID( "interfaceIconFrameDimmed" ), desc7, DialogModes.NO );
// check selection;
try {activeDocument.selection.bounds;
alert ("pixels")
}
catch (e) {alert ("empty")}
}
};
////// has layer mask //////
function hasLayerMask () {
var m_Dsc01, m_Ref01;
m_Ref01 = new ActionReference();
m_Ref01.putEnumerated(stringIDToTypeID("layer"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
m_Dsc01 = executeActionGet(m_Ref01);
return m_Dsc01.hasKey(charIDToTypeID("Usrs"));
};
... View more
Mar 05, 2025
05:38 PM
I think Stephen might be right. Although you don’t need a preview to know that an image is going to be bigger or smaller, a preview can be very practical and useful if you are trying to anticipate whether the details in your 50% enlargement are going to look their best depending on whether you choose Automatic, Preserve Details, Bicubic, or Nearest Neighbor resampling (that isn’t even all the options). And there will certainly be a visual difference between those options.
... View more
Mar 05, 2025
01:04 PM
The file is still there. Dropbox saying "Can’t load this file type" simply means it can't preview it like it would a photo or PDF or something, but you can just click Download at the bottom.
... View more
Mar 05, 2025
09:47 AM
(My "thanks so much..." comment was actually the answer to the comment that is now missing. Not sure why it's now shown as an answer to your comment)
... View more
Mar 05, 2025
08:55 AM
Amazing - I typically have to keep an image's dimensions in place, but will have to increase or decrease the DPI depending on printing requirements. I'll try these scripts and see if they require any modifation for my use case - thank you!
... View more
Community Expert
in Photoshop ecosystem Discussions
Mar 05, 2025
05:51 AM
1 Upvote
Mar 05, 2025
05:51 AM
1 Upvote
@suzy_95
I created the following script to stack alpha-numeric sorting images from two separate folders to a two-layer file. This should get you 90% of the way there. Before the script saves the file to various file formats, an action run by the script can complete any further automation that you require (the action can run another script if more complex processing is required that can't be achieved via an action).
https://community.adobe.com/t5/photoshop-ecosystem-discussions/script-to-open-files-and-layer-them/m-p/12532657#U14933502
... View more
Mar 05, 2025
03:49 AM
1 Upvote
Yeah, even more likely.
... View more