Sie können dazu das python psdtools-Paket verwenden :
from __future__ import print_function from psd_tools import PSDImage psd = PSDImage.load('my_image.psd') print("file has {} layers".format(len(psd.layers)))
Gibt es eine Möglichkeit, die Anzahl der Ebenen in einer .psd-Datei zu ermitteln?
Ich habe .psds, die sich schrecklich verlangsamen. Es gibt 20-30 Layer-Comps und eine unbekannte Anzahl von Layern. 1000? 5,0000 Ich weiß es nicht.
Der Grund dafür ist, festzustellen, an welchem Punkt Photoshop zu ersticken beginnt. Wenn ich Photoshop mit 90 verfügbarem Speicher belegt habe, werden schnell 11 GB benötigt, um die Box für andere Zwecke zu verlangsamen. Wenn ich 50% (7 GB) belasse, gibt es eine Pause, wenn ich selbst die kleinste Ebene dupliziere (etwa ein Häkchen, das in den Bereich geht) ein Kontrollkästchen).
Sie können dazu das python psdtools-Paket verwenden :
from __future__ import print_function from psd_tools import PSDImage psd = PSDImage.load('my_image.psd') print("file has {} layers".format(len(psd.layers)))
Nur ein Gedanke: Wenn Sie sich auf einem Mac befinden, kann die Dateiinfo des Finders (cmd-i) hilfreich sein, da sie alle Namen der Layer aufführt, ohne die Datei zu öffnen. Sie könnten dies in einen Texteditor mit Zeilennummerierung kopieren und alle Kommas durch Zeilenvorschub ersetzen. Die Zeilennummerierung würde die Anzahl der Layer anzeigen (ich habe nicht getestet, was mit Kommas in Layernamen geschieht).
BEARBEITEN:
Eine weitere Erkenntnis: Gimp hat eine Infotafel, die die Lagenanzahl für eine psd - Datei zeigt (Menü: Image > Image Properties
)
Leider gibt es keine automatische Funktion zum Zählen der Ebene, aber hier können Sie dieses Skript verwenden.
var totalProgress = 0// I assume this is defined eleswhere but is needed for the scriptler function layerCounter(inObj) // recursive function to count layers { totalProgress+= inObj.artLayers.length; for( var i = 0; i < inObj.layerSets.length; i++) { totalProgress++; layerCounter(inObj.layerSets[i]); // recursive call to layerCounter } return totalProgress; } function getLayerCount(){ function getNumberLayers(){ var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr"), charIDToTypeID("NmbL") ) ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); return executeActionGet(ref).getInteger(charIDToTypeID("NmbL")); } function getLayerType(idx) { var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr"), stringIDToTypeID("layerSection")); ref.putIndex(charIDToTypeID( "Lyr " ), idx); return typeIDToStringID(executeActionGet(ref).getEnumerationValue(stringIDToTypeID('layerSection'))); }; var cnt = getNumberLayers(); var res = cnt; if(activeDocument.layers[activeDocument.layers.length-1].isBackgroundLayer){ var i = 0; //comment out line below to exclude background from count res++; }else{ var i = 1; }; for(i;i<cnt;i++){ var temp = getLayerType(i); if(temp == "layerSectionEnd") res--; //if(temp == '"layerSectionStart") res--;//uncomment to count just artLayers }; return res; }; function main() { var answer = confirm("Go through your file and count all the layers??"); if(answer) { var reporter1 = layerCounter(app.activeDocument); alert("Kyletunney.com - All done! Layer count = " + reporter1); } else { reporter2 = getLayerCount(); alert("Kyletunney.com - All done! Layer count = " + reporter2); } } main();
Speichern Sie das Skript als .jsx
Wie benutze ich das Skript?
Ok, this may sound silly simple (if you have Photoshop), but the easiest way is to open the document in Photoshop and click the New Layer button at the bottom of the layers panel. The new layer will automatically be named "Layer 450" or one more than the number of the layers currently in the document.
Wenn Sie einen Mac verwenden, führen Sie dieses Skript im Skript-Editor aus:
tell application "Adobe Photoshop CC 2015.5" activate set theDOC to the current document tell theDOC set numberOfLayers to count of layers display dialog numberOfLayers as string end tell end tell
Mach Folgendes: