Você pode usar o pacote psdtools do python para isso:
from __future__ import print_function
from psd_tools import PSDImage
psd = PSDImage.load('my_image.psd')
print("file has {} layers".format(len(psd.layers)))
Existe uma maneira de descobrir o número de camadas existentes em um .psd?
Eu tenho .psds que estão desacelerando terrivelmente. Existem 20-30 composições de camada e uma quantidade desconhecida de camadas. 1000? 5,0000? Não sei.
A razão para isso é começar a averiguar em que ponto o photoshop começa a engasgar. Se eu tiver o photoshop usando 90 de memória disponível, ele rapidamente consome 11GB, reduzindo a velocidade da minha caixa para outros propósitos e se eu deixar 50% (7GB), haverá uma pausa quando eu duplicar a camada menor (digamos, uma marca de verificação). uma caixa de seleção).
Você pode usar o pacote psdtools do python para isso:
from __future__ import print_function
from psd_tools import PSDImage
psd = PSDImage.load('my_image.psd')
print("file has {} layers".format(len(psd.layers)))
Apenas um pensamento: se você estiver em um Mac, as informações de arquivo do Finder (cmd-i) poderão ser úteis, pois lista todos os nomes das camadas sem precisar abrir o arquivo. Você pode copiar isso em um editor de texto com numeração de linha e substituir todas as vírgulas por feeds de linha. A numeração de linhas revelaria o número de camadas (não testei o que acontece com vírgulas nos nomes das camadas).
EDITAR:
Mais uma descoberta: o Gimp possui um painel de informações que mostra a contagem de camadas para um arquivo psd (Menu: Image > Image Properties
)
Infelizmente, não há recurso automático para contar a camada, mas aqui você pode usar esse script -
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();
Salve o script como .jsx
Como usar o script?
Ok, isso pode soar bobo e simples (se você tiver o Photoshop), mas a maneira mais fácil é abrir o documento no Photoshop e clicar no botão Nova camada na parte inferior do painel de camadas. A nova camada será automaticamente denominada "Camada 450" ou mais uma que o número das camadas atualmente no documento.
Se você estiver usando um Mac, execute este script no Editor de scripts:
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
Faça o seguinte:
Tags adobe-photoshop layers