Вопрос: Количество кол-во слоев в Photoshop


Есть ли способ узнать количество слоев в .psd?

У меня есть .psds, которые ужасно замедляются. Есть 20-30 слоев и неизвестное количество слоев. 1000? 5,0000? Я не знаю.

Причина этого - начать выяснять, в какой момент фотошоп начинает задыхаться. Если у меня есть фотошоп, использующий 90 доступной памяти, он быстро взлетает на 11 ГБ, замедляя мой ящик для других целей, и если я оставлю его на 50% (7 ГБ), возникает пауза, когда я дублирую даже самый маленький слой (скажем, галочку, которая входит в флажок).


2
2017-11-03 17:44


Источник




Ответы:


Вы можете использовать python Пакет psdtools для этого:

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
2017-11-03 19:18



У меня возникли проблемы с загрузкой этого пакета на работу. Я не получаю доступ администратора для загрузки psdtools (или 7-zip). Вы проверите его дома. - Mayo


Просто мысль: если вы находитесь на Mac, информация файла Finder (cmd-i) может оказаться полезной, поскольку в ней перечислены все имена слоев, даже не открывая файл. Вы можете скопировать его в текстовый редактор с нумерацией строк и заменить все запятые на linefeeds. Нумерация строк покажет количество слоев (я не проверял, что происходит с запятыми в именах слоев).

РЕДАКТИРОВАТЬ:

Еще один вывод: канитель имеет информационную панель, которая показывает количество слоев для файла psd (Меню: Image > Image Properties)

gimp psd layercount


1
2017-11-03 18:41



Интересно. К сожалению, я не на маке. Я видел это, когда я искал googled. Я не видел этот вариант для ПК. - Mayo
возможно, это помогает, с быстрым взглядом он не выглядел специфичным для Mac: blog.kyletunneyphotography.com/counting-layers-in-photoshop - AAGD
спасибо. Я видел это во время поиска (после публикации), и я вижу, что Rishab Ag скопировал и вложил текст с этого сайта. Попробуем. - Mayo


К сожалению, нет возможности автоматического подсчета уровня, но здесь вы можете использовать этот сценарий,

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();

Сохраните скрипт как .jsx

Как использовать скрипт?

  • Откройте Photoshop с файлом, который вы хотите сосчитать
  • Нажмите «Файл»
  • Затем «Сценарии»
  • Теперь нажмите «Обзор»
  • Найдите сценарий, который вы только что сохранили, и нажмите «Загрузить».
  • Теперь вам будет предложено «Пройти через свой файл и подсчитать все слоев? 'Нажмите «Да»
  • Теперь вы будете проинформированы о количестве слоев в вашем файле!

0
2017-11-03 19:21



Я дважды пробовал этот скрипт. Он разбил Photoshop одновременно. Возможно, он работает с файлом с 10 слоями. Но он не работал с файлом с сотнями. Или это тысячи? - Mayo
Странно, что эти скрипты сообщают о 48 слоях в файле с 38 слоями .. :( - SpaceDog


Хорошо, это может показаться глупым простым (если у вас есть Photoshop), но самый простой способ - открыть документ в Photoshop и нажать кнопку «Новый слой» в нижней части панели слоев. Новый слой будет автоматически называться «Layer 450» или еще больше, чем количество слоев, находящихся в настоящее время в документе.


0
2018-04-27 16:59





Если вы используете Mac, запустите этот скрипт в редакторе сценариев:

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
2017-07-14 20:01





Выполните следующие действия:

  1. В строке состояния в левом нижнем углу окна редактирования щелкните стрелку с правым указателем.

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

  1. В появившемся всплывающем меню выберите «Layer Count».
  2. Прочитайте количество слоев в строке состояния.

The status bar reads: 108 layers, 18 groups


0
2018-01-10 14:10



@FleetCommand, спасибо за демонстрацию того, как написать хороший ответ. - fixer1234
@Burgi Да, я знаю, но меня поразило сложное кодирование и материал по сравнению с решениями с двумя щелчками (скомпенсированные фотографиями tho) - Goosfraba