Photoshop-Cafe.de :: Dein Photoshop-Forum

Photoshop-Cafe.de :: Dein Photoshop-Forum (https://www.photoshop-cafe.de/forum/index.php)
-   Hilfestellung, Tipps und Tricks (https://www.photoshop-cafe.de/forum/forumdisplay.php?f=30)
-   -   Photoshop Ebenenstapel per Aktion oder Skript sortieren (https://www.photoshop-cafe.de/forum/showthread.php?t=26864)

FragenÜberFragen 08.01.23 09:34

Ebenenstapel per Aktion oder Skript sortieren
 
Liebe Photoshop-Experten,

ich habe eine Frage - vorab: es geht um mehrere 10000 Bilder, deshalb wäre mir eine Automatisierung per Aktion oder Skript sehr gelegen. :bleh:

Meine Bilder haben drei Ebenen: Hintergrund, Einstellungsebene 1 (Tonwert), Einstellungsebene 2 (Farbton/Sättigung). Ich möchte, dass bei allen diesen Bildern die Einstellungsebene 2 ganz oben liegt, was derzeit zwar bei den allermeisten Bildern der Fall ist, aber nicht bei allen.

Ich möchte das vor allem deshalb, damit ich diese Ebene ggf. später einmal löschen kann per Aktion (Löschen der obersten Ebene im Stapel).

Oder gibt es die Möglichkeit, im Ebenenstapel gezielt die Einstellungsebene "Farbton/Sätttigung" zu finden und auszublenden und das bitte automatisiert?

Ich hoffe, ich konnte verständlich machen, was das Problem ist bzw. was mir vorschwebt. :nixweiss:

Vielen Dank schon mal und beste Grüße
Dirk

heikehk 08.01.23 12:15

Die einzige Idee, die ich dazu habe wäre, wenn die Einstellungsebene in den Bildern immer gleich heißt, dann müsse man die per Skript immer finden können, wo sie sich auch befindet und müsste sie dann nach oben verschieben können.

Ich skripte allerdings fast nie in Photoshop, weswegen ich das nicht umsetzen kann.

Heißt sie denn immer gleich?

LG
und willkommen im PSC
Heike

FragenÜberFragen 08.01.23 12:30

Zitat:

Zitat von heikehk (Beitrag 395685)
Heißt sie denn immer gleich?

Ja, immer gleich.

Das dachte ich mir nämlich auch, dass das dann gescriptet werden könnte. Allerdings weiß ich dann auch nicht, wie konkret die Syntax ist, um den Ebenenstapel so zu sortieren, dass besagte Ebene immer oben liegt.

Alternativ wäre es auch eine Option, die immer gleich heißende Ebene über ein Skript aufzufinden und auszublenden. Eigentlich noch eleganter.

heikehk 09.01.23 16:17

da hast Du recht :)
Das könnte gegebenenfalls auch eine Aktion erledigen...

outrage 20.01.23 14:12

Dieses skript sollte machen, was Du möchtest:

for (var i = activeDocument.artLayers.length-1; i>=0; i--) {
activeDocument.activeLayer = activeDocument.artLayers[i];
if (activeDocument.activeLayer.name == "Farbton/Sättigung 1") {
activeDocument.activeLayer.visible = false;
}
}

activeDocument.close(SaveOptions.SAVECHANGES);

FragenÜberFragen 21.01.23 14:50

Zitat:

Zitat von outrage (Beitrag 395844)
Dieses skript sollte machen, was Du möchtest:

for (var i = activeDocument.artLayers.length-1; i>=0; i--) {
activeDocument.activeLayer = activeDocument.artLayers[i];
if (activeDocument.activeLayer.name == "Farbton/Sättigung 1") {
activeDocument.activeLayer.visible = false;
}
}

activeDocument.close(SaveOptions.SAVECHANGES);

Vielen Dank!

Das probiere ich gerne aus.

heikehk 24.01.23 23:26

Hi outrage,

kleine Frage, weil ich was lernen will.

Bedeutet die 1 in dieser Zeile, dass der ersten Farbton/Sättigung Layer, den das Skript findet ausgeblendet wird?

Code:

if (activeDocument.activeLayer.name == "Farbton/Sättigung 1")
LG
Heike

outrage 25.01.23 09:49

Nein.
Das bedeutet, dass die Ebene, die exakt den Namen "Farbton/Sättigung 1" trägt, ausgeblendet wird.

Ich habe das skript noch mal umgeschrieben. Damit wird die Farbton/Sättigungsebene ausgeblendet, egal wie sie heisst. Sind mehrere vorhanden, werden alle ausgeblendet:

Code:

for (var i = activeDocument.artLayers.length-1; i>=0; i--) {
activeDocument.activeLayer = activeDocument.artLayers[i];
if (activeDocument.activeLayer.kind == LayerKind.HUESATURATION) {
activeDocument.activeLayer.visible = false;
}
}

activeDocument.close(SaveOptions.SAVECHANGES);


heikehk 25.01.23 13:31

Hi outrage,

cool :)

Code:

var count = 0
for (var i = activeDocument.artLayers.length-1; i>=0; i--) {
  activeDocument.activeLayer = activeDocument.artLayers[i];
  if (activeDocument.activeLayer.kind == LayerKind.HUESATURATION) {
    count = count + 1
    if (count == 2) {
      activeDocument.activeLayer.visible = false;
    }

  }
}

activeDocument.close(SaveOptions.SAVECHANGES);

Würde diese Anpassung dafür sorgen, dass ich z.b. nur den zweiten gefundenen Farbton/Sättigung Layer ausblenden würde?

Macht Spaß :)

outrage 26.01.23 10:23

Ja, bei mir funktioniert es so - die zweite Farbton/Sättigung-Ebene von unten wird ausgeblendet. Ich habe die for-Schleife noch mal umgeschrieben, falls Du die zweite Farbton/Sättigung-Ebene von oben ausblenden willst (und statt count = count + 1 kannst Du auch count++ schreiben):
Code:

var count = 0
for (var i = 0; i < activeDocument.artLayers.length-1; i++) {
  activeDocument.activeLayer = activeDocument.artLayers[i];
  if (activeDocument.activeLayer.kind == LayerKind.HUESATURATION) {
    count++
    if (count == 2) {
      activeDocument.activeLayer.visible = false;
    }

  }
}

activeDocument.close(SaveOptions.SAVECHANGES);



Alle Zeitangaben in WEZ +2. Es ist jetzt 09:38 Uhr.

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©2005-2024 photoshop-cafe.de

Seite wurde generiert in 0,02009 Sekunden mit 8 Queries