jazz-y
Guide
jazz-y
Guide
Activity
Aug 25, 2023
07:17 AM
1 Upvote
Just to give us something to go on - what is the pixel size of your file, how many layers and what type (pixel, adjustment), any smart objects?
... View more
Aug 22, 2023
01:01 AM
This is amazing, thanks so much!
... View more
Aug 19, 2023
07:00 AM
Yes, Photoshop can be used for cleaning up images. Still, it's not typically designed for video editing, so it might be complex for video editing because it has professional tools that require some better understanding.
If you're on macOS, I'd recommend using iMovie to clean up and raise the image quality; the Enhance button in the toolbar works wonders with just one click. Now for Windows users, I've had good experiences with Movavi, as it allows removing objects from the background with their AI tool, and the interface is super straightforward. If you need more options, you can [link removed by moderator] to find more alternatives.
... View more
Aug 12, 2023
07:52 AM
1 Upvote
For some types there is no StringID, but only CharID. If typeIDtoStringID returns an empty string, use typeIDtoCharID. To determine the ReferenceFormType for a reference, use ref.getForm();
... View more
Aug 12, 2023
04:04 AM
@3pp57015374 wrote:
Hi there, when I try to run this script in Photoshop 2023 I keep getting Error 8: Syntax Error.
Am I doing something wrong or is this script not compatible with Photoshop 2023?
Thanks!
Screenshot please.
Does it mention RTF in the error? Did you save it as RTF when it should be saved as plain TXT?
... View more
Aug 01, 2023
08:20 AM
@lkazphoto, Good idea. You can also extend that to JPG as well as TIF images
... View more
Jul 20, 2023
05:26 PM
There is no way to fix it at this time. Other than rolling back to this bug-free version..
... View more
Jul 20, 2023
08:37 AM
As far as I know you are correct and a Layer identified with AM-code can only be realiably addressed for DOM-code by selecting it.
... View more
Jul 15, 2023
06:56 PM
Topic carried over to a new thread:
https://community.adobe.com/t5/photoshop-ecosystem-discussions/photoshop-script-that-checks-each-layer-s-dimensions-are-divisible-by-n-during-png-export/td-p/13938692
... View more
Jun 21, 2023
07:45 PM
I just want to re-iterate how amazing this script is. It has saved my day-to-day activities (and when i've moved a whole bunch of files to a new location by accident.) Its a simple one button fix that Adobe should really think about including with every current version of Photoshop. If anyone is on PC and can't get theirs to work, let me know and ill send you the exact JSX script and file location that I ended up putting it in. It works a charm!! Well done Jazz-y!!! Now.. Can you make one for Illustrator?!
... View more
Jun 13, 2023
06:52 PM
I managed to resolve sorry for botther you, thank you
... View more
Jun 13, 2023
12:49 AM
hi sir i want image fill with smart object please help me
... View more
Jun 07, 2023
02:39 AM
This is really amazing, thank you for your help.
... View more
May 26, 2023
11:42 AM
I flatten the image and it still reverts back to Save as a photoshop file. Additionally, I can not edit the photoshop files. The new photoshop works very poorly. I have spent hours trying to solve issues with very little success.
... View more
May 25, 2023
07:06 PM
Thank you, this solved my problem.
... View more
May 23, 2023
12:26 AM
I may not understand the problem, but Alt/Option clicking on that arrow will close all open actions in that set.
... View more
May 03, 2023
09:55 AM
Hola Quería informar de un error que sufro desde hace tiempo y con diferentes versiones de los programas. Selecciono un grupo de imágenes de bridge y sigo la siguiente ruta: Herramientas > Photoshop > Lote En todos los casos la acción que ejecuto se bloquea en el primer paso. Esa misma acción funciona correctamente si la aplico con un archivo abierto en el propio photoshop. Ya he actualizado ambos programas en varias ocasiones y el problema continua. Me gustaría que me dieran respuesta a este problema. Muchas gracias Photoshop Versión 24.4.1 Bridge Versión 13.0.3 Windows 10 64b
... View more
May 02, 2023
11:06 AM
Wow @jazz-y I just ran your code and this is great! with a few tweaks this will work perfectly for what I need. I really appreciate the time you took to help me out. 🙂
... View more
May 02, 2023
07:20 AM
Valorous Hero !!!
... View more
May 01, 2023
11:56 PM
Have you tried to figure out what gets into bt.body? It would be useful to print the contents to the console, or save it to a jsx file (and try to execute it in photoshop manually).
... View more
Apr 28, 2023
09:30 AM
@jazz-y, Thank you!...That's what I needed. Regards, Mike
... View more
Apr 26, 2023
05:06 AM
It seems like you are having trouble running an action via Python in Photoshop. According to the error message you received, it seems like the 'play' command is not currently available. After doing some research, you found out that this error message can occur when some step in the action is not behaving as it should. You have already tried deleting steps from the action to determine which step is causing the error, but even when you are only changing the image size, the error still occurs. It's great that you are using an API to control Photoshop with Python, and I would recommend checking if the API is compatible with the version of Photoshop you are using. Additionally, you may want to try running the action manually in Photoshop to see if you can identify the step that is causing the error. If you are interested in learning more about Java programming, you may want to check out this free course It covers the basics of Java programming and could be a helpful resource in your programming journey.
... View more
Apr 26, 2023
03:57 AM
Hello r-bin, i use your script it work on files, thank you so much for your help. i want to ask for one more help. we have too much file with huge metadata, so we cant open every single file and run script on it. is any way is available to run script on every file without open in photoshop.. I use exiftool with the command exiftool -r -overwrite_original -XMP-photoshop:DocumentAncestors= "location of My Problem Folder Full of Bloated Images" but it shows an error "out of memory" and stops. Again thank you for your help.
... View more
Apr 25, 2023
02:14 AM
1 Upvote
@jazz-y Thank you for clarification.
... View more
Apr 24, 2023
02:19 PM
Yes. I've already tried putting a step of 50. And yes. it's interesting to jump))) But as an option... I have a small pitch relative to the range so that will do.
... View more
Apr 22, 2023
01:11 AM
the task simply comes down to being attentive and patient
That advice seems to apply to a lot in life.
... View more
Apr 18, 2023
02:15 PM
2 Upvotes
#target photoshop
try {
var target = arguments[0],
evt = typeIDToStringID(arguments[1]);
if (evt == 'make') checkName()
} catch (e) { }
if (!target) {
dialogWindow();
}
function dialogWindow() {
var w = new Window("dialog {text: 'Rename groups',alignChildren:['fill','top']}"),
bnNotifier = w.add("button {text: 'Enable new groups tracking'}"),
bnOk = w.add("button {text:'Ok'}", undefined, undefined, { name: "ok" }),
evt = new Events();
bnNotifier.onClick = function () {
if (evt.checkEvents()) evt.removeEvents() else evt.addEvents()
setEnabledButtonValue();
}
w.onShow = function () { setEnabledButtonValue() }
function setEnabledButtonValue() {
var trackingEnabled = evt.checkEvents();
bnNotifier.text = trackingEnabled ? 'Disable new groups tracking' : 'Enable new groups tracking'
bnNotifier.graphics.foregroundColor = trackingEnabled ? bnNotifier.graphics.newPen(bnNotifier.graphics.PenType.SOLID_COLOR, [1, 0, 0, 1], 1) : bnNotifier.graphics.newPen(bnNotifier.graphics.PenType.SOLID_COLOR, [0, 0.8, 0, 1], 1)
}
w.show()
}
function checkName() {
var doc = new AM('document'),
lr = new AM('layer'),
indexFrom = doc.getProperty('hasBackgroundLayer') ? 0 : 1,
indexTo = doc.getProperty('numberOfLayers'),
groups = {};
for (var i = indexFrom; i <= indexTo; i++) {
if (lr.getProperty('layerSection', i, true).value == 'layerSectionStart') {
var cur = lr.getProperty('name', i, true).match(/(.+) (\d+$)/);
if (cur && cur.length == 3) {
var title = cur[1],
index = Number(cur[2]);
if (title == localize('$$$/Actions/Class/LayerGroup')) break;
groups[title] = groups[title] ? groups[title] : []
groups[title].push(index)
}
}
}
var basename;
for (var a in groups) {
if (!basename) { basename = a; continue; }
if (groups[basename].length < groups[a].length) basename = a;
}
if (basename) {
groups[basename].sort(function (a, b) { return a > b; });
activeDocument.suspendHistory('Rename group', 'lr.setLayerName(basename + " " + (groups[basename][groups[basename].length - 1] + 1))')
}
}
function AM(target, order) {
var s2t = stringIDToTypeID,
t2s = typeIDToStringID;
target = target ? s2t(target) : null;
this.getProperty = function (property, id, idxMode) {
property = s2t(property);
(r = new ActionReference()).putProperty(s2t('property'), property);
id != undefined ? (idxMode ? r.putIndex(target, id) : r.putIdentifier(target, id)) :
r.putEnumerated(target, s2t('ordinal'), order ? s2t(order) : s2t('targetEnum'));
return getDescValue(executeActionGet(r), property)
}
this.hasProperty = function (property, id, idxMode) {
property = s2t(property);
(r = new ActionReference()).putProperty(s2t('property'), property);
id ? (idxMode ? r.putIndex(target, id) : r.putIdentifier(target, id))
: r.putEnumerated(target, s2t('ordinal'), order ? s2t(order) : s2t('targetEnum'));
return executeActionGet(r).hasKey(property)
}
this.setLayerName = function (s, id) {
var r = new ActionReference();
if (id) r.putIdentifier(s2t('layer'), id) else r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum'));
(d = new ActionDescriptor()).putReference(s2t('target'), r);
(d1 = new ActionDescriptor()).putString(s2t('name'), s);
d.putObject(s2t('to'), s2t('layer'), d1);
executeAction(s2t('set'), d, DialogModes.NO);
}
function getDescValue(d, p) {
switch (d.getType(p)) {
case DescValueType.OBJECTTYPE: return { type: t2s(d.getObjectType(p)), value: d.getObjectValue(p) };
case DescValueType.LISTTYPE: return d.getList(p);
case DescValueType.REFERENCETYPE: return d.getReference(p);
case DescValueType.BOOLEANTYPE: return d.getBoolean(p);
case DescValueType.STRINGTYPE: return d.getString(p);
case DescValueType.INTEGERTYPE: return d.getInteger(p);
case DescValueType.LARGEINTEGERTYPE: return d.getLargeInteger(p);
case DescValueType.DOUBLETYPE: return d.getDouble(p);
case DescValueType.ALIASTYPE: return d.getPath(p);
case DescValueType.CLASSTYPE: return d.getClass(p);
case DescValueType.UNITDOUBLE: return (d.getUnitDoubleValue(p));
case DescValueType.ENUMERATEDTYPE: return { type: t2s(d.getEnumerationType(p)), value: t2s(d.getEnumerationValue(p)) };
default: break;
};
}
}
function Events() {
var f = File($.fileName);
this.addEvents = function () {
app.notifiersEnabled = true
app.notifiers.add('Mk ', f, 'layerSection')
}
this.removeEvents = function () {
for (var i = 0; i < app.notifiers.length; i++) {
var ntf = app.notifiers[i]
if (ntf.eventFile.name == f.name) { ntf.remove(); i--; }
}
}
this.checkEvents = function () {
for (var i = 0; i < app.notifiers.length; i++) {
if (app.notifiers[i].eventFile.name == f.name) return true
}
return false
}
}
* solution does not take into account the missing numbering, nesting level of groups. If necessary, you can improve this script yourself.
... View more
Apr 18, 2023
12:27 AM
@r-bin, я так понял, что нужно узнать не состояние включено/выключено, а может ли видеокарта (с точки зрения Фотошопа) его использовать. В systemInformation мнение Фотошопа на этот счет светится вне зависимости от того, что пользователь натыркал галочками в разделе performance. By @jazz-y Возможно. Только вот это всё версия-зависимое очень. В CS6 и СС2020, например, совершенно разные буковки. При этом ни одна не совпадает с твоим вариантом, как я понял для 2023.
... View more
Apr 17, 2023
06:01 AM
1 Upvote
Thasnk you for this! I managed to cobble together a working solution just after I posted this question, but your solution is so much more elegant! Very generous!
... View more
Apr 10, 2023
11:38 AM
Thankyou. I will follow that advice.
... View more