Zitat:
Es gibt keine Lösung. Nur Tricks um über umwegen zum Ziel zu kommen.
|
Lösungen gibt es für viele Dinge, so auch hier. Meiner Meinung nach sogar mit Bordmitteln von Photoshop, da die Scriptengine zu Photoshop genauso dazugehört, wie ActionScript zu Flash oder die C++ Unterstützung zu Cinema oder Makros zu Word oder ...
Hier gibts den Download:
http://www.photoshop-cafe.de/forum/s...5008#post45008
Und hier das Script zum selber speichern. Einfach in einer Textdatei (pur text!) als *.
jsx speichern:
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, bg;
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 ...
if (docRef.artLayers[i].isBackgroundLayer == true) //... und prüfe die Ebene auf Hintergrundebene. Wenn es sich um eine Hintergrundebene handelt, ...
{
bg = true; //... aktiviere bg
}
}
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 (bg == true) //Wenn bg aktiv ist ...
{
layerCount.length--; //... layerCounter um eins verringern
correctText ();
alert("Das Dokument enthält eine Hintergrundebene, \n"+layerSetCount.length+" "+setText+" und "+layerCount.length+" "+layerText); //Message in Photoshop ausgeben
}
else //Wenn bg nicht aktiv ist
{
correctText (setText, layerText);
alert("Das Dokument enthält keine Hintergrundebene, \n"+layerSetCount.length+" "+setText+" und "+layerCount.length+" "+layerText); //Message in Photoshop ausgeben
}
}
function correctText ()
{
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 ;-)
}
}
// (C) Copyright 2008 photoshop-cafe.de
//code by phoenix
Und dann mit einem Doppelklick aus dem Browser heraus starten. Wenns so noch nicht läuft, dann fehlt dem Photoshop noch die Scriptunterstützung und muss zuerst aktiviert werden.
btw ... Guten Morgen Nico,
und willkommen im Photoshop Cafe.
Wenn es Probleme mit dem Speed geben sollte bei sehr grossen Dateien, meld dich nochmal, ich hab noch ne abgespeckte Version, die nicht auf das Vorhandensein der Hintergrundebene prüft und per sofort ein Ergebnis liefert. Es würde mich überhaupt interessieren, wie das Script mit solchen grossen Dateien zurechtkommt. Hab es jetzt nur mit kleineren Dateien getestet
Gruss,
phoenix
edit: hmm. Da hat Adobe wieder Mist gebaut. Ebenensets werden grundsätzlich erstmal als Ebene gezählt, der Inhalt dafür aussen vor gelassen. Heisst im Klartext, das Script taugt im jetzigen Zustand nur, um Ebenen in einem Dokument ohne Ebenenset´s zu zählen. Eine Erweiterung müsste man sich erstmal anschaun, wenn ich Lust habe und es klappt wie ich es mir vorstelle, liefere ich sie nach.