jazz-y
Guide
jazz-y
Guide
Activity
‎Jan 08, 2024
05:22 AM
Did you work out how to do this? I can't find a way of seeing the Pantone connects in Channels. Any help would be marvellous. Thank you
... View more
‎Jan 06, 2024
02:20 AM
@Stephen Marsh
I saw all that links, but I don't know how to modify the script properly. 😕 I just need script with the action name in it, so I can call that scrip from another action.
By @filips97187540
The various scripts have comments indicating where to change the name of the action set and action.
... View more
‎Jan 05, 2024
08:02 AM
8 Upvotes
Hello! It has been awhile since you asked your question but I need some help. I have been using Photoshop forever but all of the sudden the ability to show hidden characters (spaces, returns) in Photoshop has vanished. There even used to be the paragraph symbol that you would click to toggle them on and off. It was just there and now it is gone. Am I so frustrated that I am missing somethihng?
... View more
‎Jan 01, 2024
09:26 AM
It looks like this won't work either, because if that happens, then changes to the quality will also occur, when we succeed in making a new copy by removing the existing metadata, the size will be smaller and the new metadata will be written in a new format. I am interested in the question above about how important metadata will be in the future as copyright
... View more
‎Dec 15, 2023
03:46 PM
1 Upvote
Please reinvestigate this issue for Photoshop release 25.2.0. Again, the ESC key does not work to do the things that used to work as described in this post.
... View more
‎Nov 29, 2023
03:40 PM
Hello! @jazz-y Thank you so much for this code. I modified it to select a word/words and chage the text color based on user input in a prompt. It works, but for certain artboards, it will replace the font and color of the textlayer even if it doesn't contain the text searched for. Is there a way to not alter the base styles of the layer if it's missing default values? function newText() {
var defaultValue = "";
var newPrompt = prompt(
"Which word or words do you want to change?",
defaultValue
);
if (newPrompt === null) {
return;
} else {
return newPrompt;
}
}
function newColor() {
var defaultValue = "000000";
var newPrompt = prompt(
"What color do you want to change it to? (Hex code 6 characters)",
defaultValue
);
if (newPrompt === null) {
return;
} else {
return newPrompt;
}
}
var replaceColor = [{ text: newText(), color: newColor() }];
var s2t = stringIDToTypeID;
var doc = app.activeDocument;
var docLayers = doc.layers.length; //getting top layers because artboards are top layers
for (var i = 0; i < docLayers; i++) {
if (doc.layers[i].visible && !doc.layers[i].allLocked) {
aLayer = doc.layers[i];
findTextLayer(aLayer);
}
} //end for loop
function findTextLayer(pLayer) {
var layLen = pLayer.layers.length;
for (var j = 0; j < layLen; j++) {
var layerRef = pLayer.layers[j];
if (layerRef.typename == "LayerSet") {
findTextLayer(layerRef);
} //end if for finding layerset
else {
if (layerRef.kind === LayerKind.TEXT) {
for (var i = 0; i < replaceColor.length; i++) {
replaceTextStyleByContent(
layerRef.id,
replaceColor[i].text,
colorDescFromHEX(replaceColor[i].color)
);
}
} //end if for layerkind text
} //end else
} //end for loop
} //end function
function colorDescFromHEX(hex) {
var d = new ActionDescriptor(),
style = new ActionDescriptor(),
c = new SolidColor();
c.rgb.hexValue = hex;
d.putDouble(s2t("red"), c.rgb.red);
d.putDouble(s2t("grain"), c.rgb.green);
d.putDouble(s2t("blue"), c.rgb.blue);
style.putObject(s2t("color"), s2t("RGBColor"), d);
return style;
}
function replaceTextStyleByContent(layerID, text, newStyleDesc) {
var s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(
s2t("property"),
(p = s2t("textKey"))
);
r.putIdentifier(s2t("layer"), layerID);
if (executeActionGet(r).hasKey(p)) {
var textItem = executeActionGet(r).getObjectValue(p),
sList = textItem.getList(s2t("textStyleRange")),
l = new ActionList(),
styleSheet = [],
content = textItem.getString(p);
for (var i = 0; i < sList.count; i++) {
var cur = sList.getObjectValue(i);
styleSheet.push({
from: cur.getInteger(s2t("from")),
to: cur.getInteger(s2t("to")),
style: (function (d) {
if (d.hasKey((p = s2t("styleSheetHasParent"))) && d.getBoolean(p))
if (d.hasKey((p = s2t("baseParentStyle"))))
extendDescriptor(d.getObjectValue(p), d);
return d;
})(cur.getObjectValue(s2t("textStyle"))),
});
styleSheet[i].text = content.substring(
styleSheet[i].from,
styleSheet[i].to
);
}
do {
var len = styleSheet.length,
found = false;
for (var i = 0; i < len; i++) {
var offset = 0,
cur = styleSheet[i].text;
if (cur) {
var match = cur.match(new RegExp(text, "i")),
from,
to;
if (match) {
from = cur.indexOf(match[0]) + offset;
to = from + match[0].length;
offset += match[0].length;
cur = cur.substring(cur.indexOf(match[0]) + match[0].length);
customStyle = setCustomStyle(styleSheet[i], from, to, newStyleDesc);
styleSheet.splice.apply(styleSheet, [i, 1].concat(customStyle));
len += customStyle.length - 1;
i += customStyle.length - 1;
found = true;
}
}
}
} while (found);
var l = new ActionList();
for (var i = 0; i < styleSheet.length; i++) {
var d = new ActionDescriptor();
d.putObject(s2t("textStyle"), s2t("textStyle"), styleSheet[i].style);
d.putInteger(s2t("from"), styleSheet[i].from);
d.putInteger(s2t("to"), styleSheet[i].to);
l.putObject(s2t("textStyleRange"), d);
}
textItem.putList(s2t("textStyleRange"), l);
(r = new ActionReference()).putIdentifier(s2t("layer"), layerID);
(d = new ActionDescriptor()).putReference(s2t("target"), r);
d.putObject(s2t("to"), s2t("textLayer"), textItem);
executeAction(s2t("set"), d, DialogModes.NO);
}
function setCustomStyle(baseStyleSheet, from, to, newStyleDesc) {
var output = [],
offset = baseStyleSheet.from;
if (baseStyleSheet.from != from + offset) {
output.push({
from: baseStyleSheet.from,
to: from + offset,
style: baseStyleSheet.style,
text: baseStyleSheet.text.substring(0, from),
});
}
var customStyle = new ActionDescriptor();
extendDescriptor(baseStyleSheet.style, customStyle);
extendDescriptor(customStyle, newStyleDesc, true);
output.push({
from: from + offset,
to: to + offset,
style: newStyleDesc,
text: null,
});
if (baseStyleSheet.to != to + offset) {
output.push({
from: to + offset,
to: baseStyleSheet.to,
style: baseStyleSheet.style,
text: baseStyleSheet.text.substring(to),
});
}
return output;
}
/** tnx to
* https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-to-copy-save-styles-typeface-font-size-design-etc-of-arbitrary-text-fragments-and-apply-them-to/m-p/10522630
*/
function extendDescriptor(src_desc, dst_desc) {
try {
for (var i = 0; i < src_desc.count; i++) {
var key = src_desc.getKey(i);
if (dst_desc.hasKey(key)) continue;
var type = src_desc.getType(key);
switch (type) {
case DescValueType.ALIASTYPE:
dst_desc.putPath(key, src_desc.getPath(key));
break;
case DescValueType.BOOLEANTYPE:
dst_desc.putBoolean(key, src_desc.getBoolean(key));
break;
case DescValueType.CLASSTYPE:
dst_desc.putClass(key, src_desc.getClass(key));
break;
case DescValueType.DOUBLETYPE:
dst_desc.putDouble(key, src_desc.getDouble(key));
break;
case DescValueType.INTEGERTYPE:
dst_desc.putInteger(key, src_desc.getInteger(key));
break;
case DescValueType.LISTTYPE:
dst_desc.putList(key, src_desc.getList(key));
break;
case DescValueType.RAWTYPE:
dst_desc.putData(key, src_desc.getData(key));
break;
case DescValueType.STRINGTYPE:
dst_desc.putString(key, src_desc.getString(key));
break;
case DescValueType.LARGEINTEGERTYPE:
dst_desc.putLargeInteger(key, src_desc.getLargeInteger(key));
break;
case DescValueType.REFERENCETYPE:
dst_desc.putReference(key, src_desc.getReference(key));
break;
case DescValueType.OBJECTTYPE:
dst_desc.putObject(
key,
src_desc.getObjectType(key),
src_desc.getObjectValue(key)
);
break;
case DescValueType.ENUMERATEDTYPE:
dst_desc.putEnumerated(
key,
src_desc.getEnumerationType(key),
src_desc.getEnumerationValue(key)
);
break;
case DescValueType.UNITDOUBLE:
dst_desc.putUnitDouble(
key,
src_desc.getUnitDoubleType(key),
src_desc.getUnitDoubleValue(key)
);
break;
default:
alert("Unknown data type in descriptor");
return false;
}
}
return true;
} catch (e) {
throw e;
}
}
}
... View more
‎Nov 25, 2023
06:26 AM
1 Upvote
Hey, it's possible to apply shaders code using the Photoshop Shader Plugin which may be found on its itch.io page: https://hellmapper.itch.io/photoshop-shader-plugin
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Nov 23, 2023
12:29 PM
1 Upvote
‎Nov 23, 2023
12:29 PM
1 Upvote
You're welcome. The following 2 of the 3 scripts offer more options:
Layer Saver Plus script can also use a common layer and create versions with the other layers + common layer:
As can the Layer Saver script:
... View more
‎Nov 23, 2023
12:42 AM
Ingenious!
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Nov 22, 2023
11:34 PM
2 Upvotes
‎Nov 22, 2023
11:34 PM
2 Upvotes
Did you get ChatGPT or another AI coding platform to write the script?
... View more
‎Nov 22, 2023
03:05 PM
Hey jazz-y, Thanks very much for your reply, I will put your changes in place and give it a whirl. It must just be me, but I find these conventions of the Batch command difficult to remember and counter-intuitive, so I appreciate you making things clear. To summarize my understanding now, because on the input side of the Batch command leaving "Override Action "Open" Commands unchecked means Batch will do the overhead of iterating through all the files in the Source folder and I'll be able to open my red background file each iteration. And, leaving the "Override Action, "Save As" command checked means Batch will handle saving the output file and use the same file name (but perhaps a different folder) as the input image has. If you or anyone could explain what occurs with these settings that you've supplied better or more clearly, I'd be very grateful to read it. Thanks, jazz-y, I very much appreciate your help with this! Ian J.
... View more
‎Nov 22, 2023
02:32 PM
1 Upvote
I'll try to make one. Just need to get into the Zone first ... 😉
... View more
‎Nov 21, 2023
07:06 AM
Thank you so much, jazz-y! Your response was exactly what I was looking for and worked perfectly.
... View more
‎Oct 19, 2023
08:24 AM
1 Upvote
The solution that resolved the issue for my client was reinstalling Photoshop 2023. The root cause remains unclear. It could have been the Windows upgrade or Photoshop itself that damaged what seems to be Windows registry entries. The more likely scenario, however, would attribute the problem to a Windows upgrade, and this isn't the first time. After the upgrade, it rearranged my external drive letters. For several weeks, I suspected a hacking attack, only to later discover it had swapped my drive letters. I tried using recovery software to retrieve my files, but the only major directory I was concerned about was nowhere to be found. It was only then that I realized the relative sizes (free space) of the external disks in question (3 - 1 TB). That's a significant mistake! I've also noticed other quality lapses in Microsoft products. Nevertheless, they remain one of the top software producers globally.
... View more
‎Oct 18, 2023
07:53 PM
I would like to find out if it is possible to disable the dialog box, enable the script by hand, and input the fade amount manually. After looking at the script, it seems that disabling the dialog box also disables the entire script.
... View more
‎Oct 14, 2023
02:53 AM
Obviously you need to adapt the code that applies the color if you insist on using hex-numbers.
... View more
‎Oct 06, 2023
05:50 AM
2 Upvotes
Hi @Md Yusuf320201622gdl, As mentioned earlier, we do not have any control over how WhatsApp manages its file-sharing system.
We are trying whatever is possible from our side if we can have more controls here.
-Souvik
... View more
‎Oct 03, 2023
09:28 AM
Has this script been updated for the use on newer versions of PS?
... View more
‎Sep 20, 2023
03:58 AM
1 Upvote
this is plist for a game i want to make in photoshop for 100 layers <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>1-1x</key> <array> <integer>389</integer> <!--1--> <integer>82</integer> <!--2--> <integer>104</integer> <!--3--> <integer>220</integer> <!--4--> <integer>286</integer> <!--5--> <integer>640</integer> <!--6--> <integer>235</integer> <!--7--> <integer>89</integer> <!--8--> <integer>286</integer> <!--9--> <integer>439</integer> <!--10--> <integer>89</integer> <!--11--> <integer>211</integer> <!--12--> <integer>600</integer> <!--13--> <integer>631</integer> <!--14--> <integer>339</integer> <!--15--> <integer>470</integer> <!--16--> <integer>562</integer> <!--17--> <integer>624</integer> <!--18--> <integer>727</integer> <!--19--> <integer>401</integer> <!--20--> </array> <key>1-1y</key> <array> <integer>849</integer> <!--1--> <integer>764</integer> <!--2--> <integer>104</integer> <!--3--> <integer>193</integer> <!--4--> <integer>301</integer> <!--5--> <integer>425</integer> <!--6--> <integer>799</integer> <!--7--> <integer>294</integer> <!--8--> <integer>440</integer> <!--9--> <integer>278</integer> <!--10--> <integer>488</integer> <!--11--> <integer>565</integer> <!--12--> <integer>158</integer> <!--13--> <integer>579</integer> <!--14--> <integer>69</integer> <!--15--> <integer>453</integer> <!--16--> <integer>292</integer> <!--17--> <integer>814</integer> <!--18--> <integer>48</integer> <!--19--> <integer>604</integer> <!--20--> </array> </dict> </plist>
... View more
‎Sep 14, 2023
04:53 AM
Amazing! Thank you so much.
... View more
‎Sep 11, 2023
08:55 AM
3 Upvotes
Hi, sorry for being so late. I tried to edit the the OP but couldn't. Here is the function: function makedirs(folderString){
var f = new Folder(folderString);
if (f.exists == false) {
f.create()
}
} As for the path,i will try to test today on the M1 to see if that string is wrong somehow.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Sep 11, 2023
01:30 AM
1 Upvote
‎Sep 11, 2023
01:30 AM
1 Upvote
Glad it works!
I expect a couple of the regulars would be able to achieve the same result with way fewer lines of code but unless you have to process huge numbers of files/Type Layers I think the time the Scirpt takes should be acceptable.
... View more
‎Sep 10, 2023
03:06 PM
If you are trying to load the .psp file into the panel, you can't. The panel loads .atn files.
... View more
‎Sep 09, 2023
07:07 AM
1 Upvote
Use frequency separation. You can find many tutorials about this processing method. With it, you can separate image details from noise and process them separately.
... View more
‎Sep 08, 2023
08:40 AM
@jazz-y Hi! Could you please help me write a script that merges layers with the same name but doesn't match substring + PSD has grouped layers so the hierarchy doesn't flat. I would be very grateful if you could help me!
... View more
‎Sep 06, 2023
02:14 AM
Hi @c.pfaffenbichler You are correct 🙂 But I have asked the original question for a basic example and I need to enhance this for the complete solution, which is much complex! So I need to understand the prominent colors of each individual layers and act accordingly. So I woun't set the foreground color with those colors, but actually I will set them in different variables. Hope this clarifies the point 🙂 Thanks again
... View more
‎Sep 04, 2023
11:56 AM
2 Upvotes
Thanks for your recommendation jazz-y. I try to avoid proprietary formats for long-term storage, but I guess PSD is not changed as often as, say, INDD with all the ensuing compatibility issues. Furthermore, I usually edit the metadata and send JPEGs to my clients, so switching the archive format would not complicate things. I am going to do some tests and consider this option.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Sep 03, 2023
04:15 AM
‎Sep 03, 2023
04:15 AM
@Stellaaaaaaaaa Hi, you need to be sure that your display is reasonably accurate and not just compansating for an image which actually may be oversaturated. (when you get a calibrator that will certainly help) - for now, perhaps try this testimage in Photoshop and assess the "memory colours" such as skintones, grass etc.
please go here and download the Adobe RGB testimage: https://www.colourmanagement.net/index.php/downloads_listing/
I hope this helps neil barstow, colourmanagement net - adobe forum volunteer - co-author: 'getting colour right' google me "neil barstow colourmanagement" for lots of free articles on colour management
... View more
‎Sep 02, 2023
01:17 PM
Thanks a lot
... View more
‎Aug 29, 2023
05:07 AM
Thank you!
... View more