lucaknoop Geschrieben 1. Juli 2023 Share #1 Geschrieben 1. Juli 2023 Werbung (verschwindet nach Registrierung) Moin, Context: ich habe eine Aktion erstellt wo mit dem neuen "Generative Füllung" - Tool Bilder generiert und gespeichert werden sollen: Aktion: 1. Alles auswählen 2. Generative Füllung 3. ersten Vorschlag speichern 4. zweiten Vorschlag öffnen 5. zweiten Vorschlag als jpg speichern 6. dritten Vorschlag öffnen 7. dritten Vorschlag als jpg speichern 8. generierte Ebene löschen 9. Auswahl aufheben Dieser Vorgang soll in Dauerschleife durchgeführt werden. Stapelverarbeitung ist eigentlich eine gute Lösung, allerdings funktioniert das nicht in Dauerschleife und basiert nicht auf vorhandene Bilder, wie es bei einer Stapelverarbeitung eigentlich üblich ist. Problem ist, dass ich in der Aktion die Speicherungs-Zwischenschritte nicht mit einem Prefix versehen kann, also dass der Dateiname mit bspw. "0001", "0002", ... usw endet. Die Bilder werden lediglich ersetzt. Ich habe ein Script im Internet gefunden, welches mir ermöglicht, eine Aktion in Dauerschleife abspielen zu lassen. Wie gesagt ersetzt meine Aktion aber immer wieder meine 3 gespeicherten Bilder: Das Script: #target photoshop app.bringToFront(); function main(){ var dlg = "dialog{text:'Script Interface',bounds:[100,100,500,230],"+ "panel0:Panel{bounds:[10,10,390,120] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+ "statictext0:StaticText{bounds:[30,10,160,30] , text:'Run Action X Times..' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Xtimes:EditText{bounds:[200,10,261,30] , text:'1' ,properties:{multiline:false,noecho:false,readonly:false}},"+ "ActionSet:DropDownList{bounds:[10,50,180,70]},"+ "ActionName:DropDownList{bounds:[200,50,370,70]},"+ "button0:Button{bounds:[40,80,140,100] , text:'Ok' },"+ "button1:Button{bounds:[240,80,340,100] , text:'Cancel' }}}"; var win = new Window(dlg,"Action Runner"); win.center(); var actionSets = new Array(); actionSets = getActionSets(); for (var i=0,len=actionSets.length;i<len;i++) { item = win.panel0.ActionSet.add ('item', "" + actionSets[i]); }; win.panel0.ActionSet.selection=0; var actions = new Array(); actions = getActions(actionSets[0]); for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.ActionName.add ('item', "" + actions[i]); }; win.panel0.ActionName.selection=0; win.panel0.ActionSet.onChange = function() { win.panel0.ActionName.removeAll(); actions = getActions(actionSets[parseInt(this.selection)]); for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.ActionName.add ('item', "" + actions[i]); } win.panel0.ActionName.selection=0; }; var done = false; while (!done) { var x = win.show(); if (x == 0 || x == 2) { win.canceled = true; //Cancelled done = true; } else if (x == 1) { done = true; var result = valiDate(); if(result != true) { alert(result); return; }else { var XTimes = parseInt (win.panel0.Xtimes.text); for (var a =0;a<XTimes;a++){ doAction(win.panel0.ActionName.selection.text, win.panel0.ActionSet.selection.text); } } } } } main(); function valiDate(){ return true; }; function getActionSets() { cTID = function(s) { return app.charIDToTypeID(s); }; sTID = function(s) { return app.stringIDToTypeID(s); }; var i = 1; var sets = []; while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; var lvl = $.level; $.level = 0; try { desc = executeActionGet(ref); } catch (e) { break; // all done } finally { $.level = lvl; } if (desc.hasKey(cTID("Nm "))) { var set = {}; set.index = i; set.name = desc.getString(cTID("Nm ")); set.toString = function() { return this.name; }; set.count = desc.getInteger(cTID("NmbC")); set.actions = []; for (var j = 1; j <= set.count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), set.index); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); set.actions.push(actName); } sets.push(set); } i++; } return sets; }; function getActions(aset) { cTID = function(s) { return app.charIDToTypeID(s); }; sTID = function(s) { return app.stringIDToTypeID(s); }; var i = 1; var names = []; if (!aset) { throw "Action set must be specified"; } while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; try { desc = executeActionGet(ref); } catch (e) { break; // all done } if (desc.hasKey(cTID("Nm "))) { var name = desc.getString(cTID("Nm ")); if (name == aset) { var count = desc.getInteger(cTID("NmbC")); var names = []; for (var j = 1; j <= count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), i); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); names.push(actName); } break; } } i++; } return names; }; Wisst ihr eine Lösung, wie ich meine Aktion in Dauerschleife laufen lassen kann und dass meine 3 gespeicherten Bilder nicht ersetzt werden? Danke und viele Grüße Luca Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Werbung Geschrieben 1. Juli 2023 Geschrieben 1. Juli 2023 Hi lucaknoop, Das könnte für dich interessant sein: Photoshop Beta - Aktion speichern mit Prefix . Da findet jeder was…
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden