Questão Conte o número de camadas no Photoshop


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 camadas e uma quantidade desconhecida de camadas. 1000? 5,0000? Eu 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).


2


origem




Respostas:


Você poderia usar python pacote psdtools por esta:

from __future__ import print_function
from psd_tools import PSDImage

psd = PSDImage.load('my_image.psd')
print("file has {} layers".format(len(psd.layers)))

5



Estou tendo problemas para baixar esse pacote no trabalho. Eu não estou recebendo acesso de administrador para baixar psdtools (ou 7-zip). Vai dar uma olhada em casa. - Mayo


Apenas um pensamento: se você está em um Mac, as informações de arquivo do Finder (cmd-i) podem 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 da linha revelaria o número de camadas (não testei o que acontece com vírgulas nos nomes das camadas).

EDITAR:

Mais uma descoberta: Gimp tem um painel de informações que mostra a contagem de camadas para um arquivo psd (Menu: Image > Image Properties)

gimp psd layercount


1



Interessante. Infelizmente não estou em um mac. Eu vi isso quando eu pesquisei. Eu não vi essa opção para um PC. - Mayo
talvez isso ajude, em um piscar de olhos, ele não parecia específico para o Mac: blog.kyletunneyphotography.com/counting-layers-in-photoshop - AAGD
THX. Eu vi isso enquanto procurava (depois de postar) e vejo que a Rishab Ag copiou e colou o texto daquele site. Vai tentar. - Mayo


Infelizmente não há recurso automático para contar a camada, mas aqui você pode usar este 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?

  • Abra o Photoshop com o arquivo que você deseja contar
  • Clique em "Arquivo"
  • Então, 'Scripts'
  • Agora clique em "Navegar"
  • Encontre o script que você acabou de salvar e clique em Carregar
  • Agora, você será solicitado a exibir "Visualizar seu arquivo e contar todos os camadas "Clique em" Sim "
  • Agora você será informado da quantidade de camadas no seu arquivo!

0



Eu tentei este script duas vezes. Ele caiu Photoshop ambas as vezes. Talvez funcione com um arquivo com 10 camadas. Mas não funcionou em um arquivo com centenas. Ou são milhares? - Mayo
Estranhamente este scripts reporta 48 camadas em um arquivo que tem 38 camadas .. :( - SpaceDog


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.


0





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

0





Faça o seguinte:

  1. Na barra de status, no canto inferior esquerdo da janela de edição, clique na seta apontando para a direita.

Editing windows with status bar: The right-pointing arrow is highlighted.

  1. No menu que aparece, selecione "Contagem de camadas".
  2. Leia o número de camadas na barra de status.

The status bar reads: 108 layers, 18 groups


0



@FleetCommand, obrigado por demonstrar como escrever uma boa resposta. - fixer1234
@Burgi Sim, eu sei, mas eu fiquei meio impressionado com a codificação complicada e essas coisas versus uma solução de 2 cliques (compensada com fotos tho) - Goosfraba