Undankbares Volk
Teste diesen hier mal. Abfrage nach Hintergrundebene ist raus, das könnte die Laufzeit etwas verkürzen. Und mach gleich ne Messung bitte
Wenn man es richtig schnell haben möchte, darf man keine scripte nutzen. Dann muss man sich ein externes Addon bauen das entsprechend in C/C++ programmiert und kompiliert ist. Man könnte auch an einer anderen Stelle ansetzen ... wenn man Informationen über das PSD Dateiformat findet. Die Info über Ebenen und Ebenenset´s muss da irgendwo drin stehen, ein kurzer Blick in den Hexedit hat aber keine Ergebnisse geliefert.
PHP-Code:
//layerCounter.jsx checkt ob eine Hintergrundebene vorhanden ist und zählt die Anzahl der Ebenen im aktiven Dokument
//Ebenenset´s werden rekursiv berücksichtigt
#target photoshop
app.bringToFront(); //Photoshop in Vordergrund setzen
var docRef = app.activeDocument;
var i;
var setText = "Ebenenset´s", layerText = "Ebenen";
var layerCount = new Array (), layerSetCount = new Array();
countAll (docRef); //Funktion countAll zählt alle im Dokument enthaltenen Ebenenset´s sowie Ebenen und prüft ob eine Hintergrundebene vorhanden ist
createMessage (); //Funktion createMessage gibt das Ergebnis von countAll in einer Messagebox in Photoshop aus
function countAll (docRef)
{
for(var i= 0; i < docRef.artLayers.length; i++) //Mach einen Durchlauf pro vorhandener Ebene ...
{
layerCount.push (1) //... erhöhe den Array-Zeiger für jede Ebene um 1 ...
}
for (var i = 0; i < docRef.layerSets.length; i++) //Mach einen Durchlauf pro vorhandenes Ebenenset ...
{
layerSetCount.push (1); //... erhöhe den Array-Zeiger für jedes Ebenenset um 1 ...
countAll (docRef.layerSets[i]); //... und zähle die im Ebenenset vorhandenen Ebenen
}
}
function createMessage ()
{
if (layerCount.length == 1) //Wenn nur eine Ebene existiert ...
{
layerText = "Ebene"; //... Ebenen in Ebene umwandeln für korrekte Ausgabe ;-)
}
if (layerSetCount.length == 1) //Wenn nur ein Ebenenset existiert ...
{
setText = "Ebenenset"; //... Ebenenset´s in Ebenenset umwandeln für korrekte Ausgabe ;-)
}
alert("Das Dokument enthält "+layerSetCount.length+" "+setText+" und "+layerCount.length+" "+layerText); //Message in Photoshop ausgeben
}
// (C) Copyright 2008 photoshop-cafe.de
//code by phoenix