• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Mitmachen beim DSLR-Forum Fotowettbewerb Mai 2025.
    Thema: "Grün"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum Mai-Wettbewerb hier!
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

Photoshop Spezialfrage: Skript Ebenenausblendung

usaletsgo

Themenersteller
Liebe Photoshop-Experten,

kennt sich jemand mit dem Skripten in Photoshop richtig gut aus?

Ich könnte ein Skript gebrauchen, mit dem eine immer gleich benannte Einstellungsebene in einem Ebenenstapel ein- oder ausgeblendet wird. Die Ebene liegt meistens ganz oben im Stapel, aber nicht immer, so dass eine einfache Aktion ausscheidet.

Da müsste also eine Adressierung des Ebenennamens rein mit einem toggle für Ein- und Ausblendung.

Da es sich um knapp 70.000 Bilder handelt, wäre ein Skript nicht gerade uninteressant. :)

Viele Grüße
Dirk
 
Welche Ps Version denn? Und Aufruf des Scripts über Aktion/Tastenkombination?

Ich habe die aktuellste: 24.0.1

Wenn man das über eine Aktion aufrufen könnte oder Tastenkombination, wäre das natürlich cool.

Die Ebene heißt überall "Farbton/Sättigung 1", glaube ich (kann leider gerade nicht nachgucken). Das ist der Standardname, den PS vergibt, wenn man eine Farbton-Einstellungsebene anlegt. Den habe ich nicht geändert.
 
Ich guck morgen mal. Soll ja regnen.
 
Hier ein erster Versuch fast ohne Fehlerbehandlung:

Code:
var name_ebene = "Farbton/Sättigung 1"

if (app.documents.length < 1) {
    alert("kein Dokument geöffnet");
}
else {
    displayDialogs = DialogModes.NO;
    var aD = activeDocument;  

    var layerRef = aD.artLayers.getByName(name_ebene); 
	if (layerRef.visible) {
	   layerRef.visible = false;
	}
	else {
	   layerRef.visible = true;
    }
	
    displayDialogs         = startDisplayDialogs;
}
Code kopieren, in eine Textdatei mit Endung .jsx kopieren, ggf. noch den Text in name_ebene anpassen.
Bild in Ps öffnen, Datei>Scripten>Durchsuchen und die .jsx-Datei auswählen.
Das Script sollte die Sichtbarkeit der Einstellungsebene ändern bzw. toggeln, von an nach aus oder von aus nach an. Gespeichert wird nichts.
 
Die Ebene liegt meistens ganz oben im Stapel, aber nicht immer, so dass eine einfache Aktion ausscheidet.

In einer Aktion kannst du aber Bestimmen ob diese Ebene zb."Farbton/Sättigung 1" ein bzw. ausgeblendet werden soll.
Sind doch nur 2 klicks das zu erstellen, warum groß mit Skript Arbeiten ?


Du musst so vorgehen.
Ausgewählt ist die Hintergrundebene
Dann erstellst du eine neue Aktion zb. - Ausblenden Farbton und Startest die Aufzeichnung, dann 1. Klick ist auf diese Ebene, 2. Klick aufs Auge zum Ausblenden. Aufzeichnung Stopen, und Fertig, sieht dann so aus

[ATTACH_ERROR="dslrToolsAttachRewrite"]4474722[/ATTACH_ERROR]

In dem Test habe dich diese Aktion mit strg+F2 als Shortcut belegt :-)
 
Zuletzt bearbeitet:
In einer Aktion kannst du aber Bestimmen ob diese Ebene zb."Farbton/Sättigung 1" ein bzw. ausgeblendet werden soll.
Sind doch nur 2 klicks das zu erstellen, warum groß mit Skript Arbeiten ?

Tatsächlich, vielen Dank!

Ich hatte gedacht, dass das nicht geht, weil die fragliche Ebene nicht immer an der gleichen Position liegt.

Ich hatte das ausprobiert, aber wohl irgendwas falsch gemacht, weil es nicht klappte.

_____________

Noch eine Frage dazu: Das Speichern nach Ein- bzw. Ausblendung dürfte doch verlustfrei erfolgen, da Einstellungsebene im *psd-Format, oder sehe ich das falsch?
 
Zuletzt bearbeitet:
Hier ein erster Versuch fast ohne Fehlerbehandlung:

Code:
var name_ebene = "Farbton/Sättigung 1"

if (app.documents.length < 1) {
    alert("kein Dokument geöffnet");
}
else {
    displayDialogs = DialogModes.NO;
    var aD = activeDocument;  

    var layerRef = aD.artLayers.getByName(name_ebene); 
	if (layerRef.visible) {
	   layerRef.visible = false;
	}
	else {
	   layerRef.visible = true;
    }
	
    displayDialogs         = startDisplayDialogs;
}
Code kopieren, in eine Textdatei mit Endung .jsx kopieren, ggf. noch den Text in name_ebene anpassen.
Bild in Ps öffnen, Datei>Scripten>Durchsuchen und die .jsx-Datei auswählen.
Das Script sollte die Sichtbarkeit der Einstellungsebene ändern bzw. toggeln, von an nach aus oder von aus nach an. Gespeichert wird nichts.

VIELEN DANK für deine Hilfe, und dass du dir die Arbeit gemacht hast.

Ich werde das sicherlich verwenden können, und sei es, um zu lernen, wie man so etwas skriptet.

Klasse!
 
Ich hatte das ausprobiert, aber wohl irgendwas falsch gemacht, weil es nicht klappte.
Der Fehler war mit sicherheit das du diese Ebene nicht ausgewählt hast. Das geht so mit jeder Ebene, eine weitere Aktion um diese wieder ein zu schalten muss diese Ebene beim Aufzeichnen aber auch Ausgeblendet sein. :-)
 
Ist ja ganz schön mit der Aktion, nur bekomme ich eine Fehlermeldung, wenn die Datei eine Ebene "Farbton/Sättigung 1" nicht enthält. Das ist ziemlich blöd in einer Stapelverarbeitung.
 
Einfach in der Stapelverarbeitung angeben das eine Ebene erstellt werden soll. Wo keine Ebene ist, wird 1 verwendet, wo bereits die Ebene 1 da ist wird diese 2 benannt. Danach einfach Batch alle Ebenen mit 2 löschen.
 
Hier ein erster Versuch fast ohne Fehlerbehandlung:

Code:
var name_ebene = "Farbton/Sättigung 1"

if (app.documents.length < 1) {
    alert("kein Dokument geöffnet");
}
else {
    displayDialogs = DialogModes.NO;
    var aD = activeDocument; 

    var layerRef = aD.artLayers.getByName(name_ebene);
    if (layerRef.visible) {
       layerRef.visible = false;
    }
    else {
       layerRef.visible = true;
    }
   
    displayDialogs         = startDisplayDialogs;
}
Code kopieren, in eine Textdatei mit Endung .jsx kopieren, ggf. noch den Text in name_ebene anpassen.
Bild in Ps öffnen, Datei>Scripten>Durchsuchen und die .jsx-Datei auswählen.
Das Script sollte die Sichtbarkeit der Einstellungsebene ändern bzw. toggeln, von an nach aus oder von aus nach an. Gespeichert wird nichts.
Das Skript funktioniert tadellos - noch mal herzlichen Dank an @shreblov.

Ich würde es gerne über eine Stapelverarbeitung nutzen. Weiß jemand, wie ich das automatisieren kann? Im Bildprozessor kann ich ja nur Aktionen auswählen, ansonsten wäre das meine Wahl gewesen. Im Skriptereignis-Manager finde ich kein passendes Ereignis, an das ich das Skript hängen könnte. Man kann da ja eigene Ereignisse definieren, aber geht da auch sowas wie eine Tastenkombination?

Ich habe versucht, das Skript in eine Aktion einzubinden. Also neue Aktion, Skript an einem Bild laufen lassen, Aktion beenden. Doch leider funktioniert diese Aktion nicht in der Stapelverarbeitung.

Ich habe das Skript in den richtigen Ordner gepackt - kann es ja auch unter dem Menüpunkt "Skripten" aufrufen.
 
Zunächst mal eine überarbeitete Version mit ein bisschen mehr Fehlerbehandlung:
Javascript:
var name_ebene = "Farbton/Sättigung 1"

if (app.documents.length < 1) {
    alert("kein Dokument geöffnet");
}
else {
    displayDialogs = DialogModes.NO;
    var aD = activeDocument;
       
    try {
        var layerRef = aD.artLayers.getByName(name_ebene);
        if (layerRef.visible) {
            layerRef.visible = false;
        }
        else {
            layerRef.visible = true;
        }
    }
    catch(e) {
       // alert("Ebene " + name_ebene + " nicht vorhanden.");
       // alert(e)
    }
   
    displayDialogs         = startDisplayDialogs;
}

Wenn Du bei fehlender Einstellungsebene eine Fehlermeldung ausgeben möchtest, in einer der beiden Zeilen nach dem catch(e) die beiden "//" wegnehmen.

Wenn das Script unter Datei>Scripten angezeigt wird und um dann das Script über eine F-Taste zu starten:
1. In einer Aktion in den Aufzeichnungsmodus gehen.
2. Auf das Hamburger-Menü in der Aktionspalette oben rechts klicken.
3. "Menübefehl einfügen..." anklicken. Dann kommt erstmal ein Fenster mit der Warnmeldung "Keine Auswahl".
4. Das Fenster mit der Warnmeldung nicht schließen, sondern auf Datei>Scripten klicken und das entsprechende Script anklicken.
5. Im Fenster mit der Warnmeldung sollte jetzt Scripten: und der Name des ausgewählten Scripts stehen.
6. OK anklicken und der Aufruf des Scripts sollte in der Aktion aufgezeichnet sein.
 
Hi,

besten Dank!

Das Skript in die Aktion einbinden funktioniert. Das Skript ohne Aktion sowieso.

Was funktioniert noch nicht? Die Stapelverarbeitung, die ich z.B. auf alle geöffneten Bilder anwende. Da wird dann einfach vom ersten Bild eine Kopie erstellt, das Skript angewendet - das wars. Die anderen Bilder kommen gar nicht mehr an die Reihe. Sehr merkwürdig.

Aber wie gesagt: Skript läuft einwandfrei, wenn man es nur auf ein Bild anwendet. Auch Skript in Aktion klappt wie von dir beschrieben.

Ich könnte dir auch meine Aktionsdatei und die farbsättigung.jsx schicken, wenn du möchtest.
 
Dämlicher Fehler. In der vorletzten Zeile weise ich displayDialogs eine Variable zu, die ich vorher gar nicht definiert habe. Javascript innerhalb Ps ist dann so nett, die Ausführung zu beenden; das aber ganz unnett ohne Fehlermeldung. Deshalb endet dann die Stapelverarbeitung mit dem ersten Bild vor dem Speichern.

So funktionierts (die erste Zeile nach dem else fehlte):

Javascript:
var name_ebene = "Farbton/Sättigung 1"

if (app.documents.length < 1) {
    alert("kein Dokument geöffnet");
}
else {
    var startDisplayDialogs = displayDialogs;
    displayDialogs = DialogModes.NO;
    var aD = activeDocument; 
        
    try {
        var layerRef = aD.artLayers.getByName(name_ebene);
        if (layerRef.visible) {
            layerRef.visible = false;
        }
        else {
            layerRef.visible = true;
        }
    }
    catch(e) {
       // alert("Ebene " + name_ebene + " nicht vorhanden.");
       // alert(e)
    }
    
    displayDialogs         = startDisplayDialogs;
}
 
WERBUNG
Zurück
Oben Unten