Полічити кількість шарів у Photoshop


2

Чи є спосіб дізнатись кількість шарів у .psd?

У мене є .psds, які страшенно сповільнюються. Існує 20-30 компресів шарів і невідома кількість шарів. 1000? 5,0000? Не знаю.

Причиною цього є почати з'ясовувати, в який момент фотошоп починає задихатися. Якщо у мене в Photoshop використовується 90 наявної пам’яті, він швидко підтягує 11 ГБ, сповільнюючи мій ящик для інших цілей, і якщо я залишаю його на 50% (7 ГБ), виникає пауза, коли я дублюю навіть найменший шар (скажімо, галочка, що йде в прапорець).

Відповіді:


5

Ви можете використовувати для цього пакет 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)))

У мене виникають проблеми із завантаженням цього пакету на роботі. Я не отримую доступу адміністратора для завантаження psdtools (або 7-zip). Перевірте це вдома.
травня

1

Подумка: Якщо ви перебуваєте на Mac, інформація про файл Finder (cmd-i) може бути корисною, оскільки вона перераховує всі назви шарів, навіть не відкриваючи файл. Ви можете скопіювати це в текстовий редактор з нумерацією рядків і замінити всі коми на рядки. Нумерація рядків дозволить виявити кількість шарів (я не перевіряв, що відбувається з комами в назвах шарів).

Редагувати:

Ще один висновок: Gimp має інформаційну панель , яка показує кількість шарів для Фотошоп файл (меню: Image > Image Properties)

gimp psd


Цікаво. На жаль, я не на мак. Я це бачив, коли гуглив. Я не бачив такої опції для ПК.
травня

можливо, це допомагає, на швидкому погляді це не виглядало специфічно для mac: blog.kyletunneyphotography.com/counting-layers-in-photoshop
AAGD

Дякую. Я це бачив під час пошуку (після публікації) і бачу, що Рішаб Аг скопіював і встав текст з цього сайту. Спробую.
травня

0

На жаль, немає автоматичної функції для підрахунку шару, але тут ви можете використовувати цей сценарій-

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 з файлом, який ви хочете порахувати
  • Клацніть на "Файл"
  • Потім "Сценарії"
  • Тепер натисніть "Оглянути"
  • Знайдіть щойно збережений сценарій та натисніть Завантажити
  • Тепер вам буде запропоновано "Перейти через файл і порахувати всі шари ??" Натисніть "Так"
  • Тепер вам буде повідомлено про кількість шарів у вашому файлі!

Я спробував цей сценарій двічі. Він розбився Photoshop обидва рази. Можливо, це працює з файлом з 10 шарами. Але це не працює над файлом із сотнями. Або це тисячі?
травня

дивним чином цей сценарій повідомляє про 48 шарів у файлі, який містить 38 шарів .. :(
SpaceDog

0

Гаразд, це може здатися нерозумно простим (якщо у вас є Photoshop), але найпростіший спосіб - відкрити документ у Photoshop і натиснути кнопку Новий шар у нижній частині панелі шарів. Новий шар автоматично буде названий "Layer 450" або на один більший, ніж кількість шарів, що знаходяться в документі.


0

Якщо ви використовуєте 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

Зробіть наступне:

  1. У рядку стану в нижньому лівому куті вікна редагування натисніть на стрілку праворуч.

Редагування вікон за допомогою рядка стану: підсвічується стрілка праворуч.

  1. У спливаючому меню, яке з'явиться, виберіть "Кількість шару".
  2. Прочитайте кількість шарів на панелі стану.

У рядку стану написано: 108 шарів, 18 груп


1
@FleetCommand, дякую, що продемонстрували, як написати гарну відповідь.
fixer1234

@Burgi Так, я знаю, але я був вражений складним кодуванням та речами порівняно з рішеннями на 2 кліки (компенсовано картинками Тхо)
Goosfraba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.