web-dev-qa-db-ja.com

Photoshopのレイヤー数を数える

.psdにあるレイヤーの数を調べる方法はありますか?

ひどく遅くなっている.psdsがあります。 20〜30のレイヤーコンプと不明な数のレイヤーがあります。 1000? 5,0000?知りません。

これは、フォトショップがどの時点で窒息し始めるのかを確認し始めるためです。フォトショップで使用可能なメモリを90個使用すると、11 GBがすぐに占有され、他の目的でボックスの速度が低下します。50%(7 GB)のままにすると、最小のレイヤーでも複製するときに一時停止が発生します(チェックボックス)。

2
Mayo

これにはpython psdtools package を使用できます:

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
joojaa

考えてみてください。Macを使用している場合は、ファイルを開かなくてもレイヤーのすべての名前が一覧表示されるため、Finderのファイル情報(cmd-i)が役立つ場合があります。これを行番号付きのテキストエディタにコピーし、すべてのカンマを改行に置き換えることができます。行番号はレイヤーの数を明らかにします(レイヤー名のコンマで何が起こるかはテストしていません)。

編集:

もう1つの発見: Gimp には、psdファイルのレイヤー数を表示する情報パネルがあります(メニュー:Image > Image Properties

gimp psd layercount

1
AAGD

残念ながら、レイヤーをカウントする自動機能はありませんが、ここではこのスクリプトを使用できます-

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
Rishab

わかりました、これはばかげて単純に聞こえるかもしれませんが(Photoshopを使用している場合)、最も簡単な方法は、Photoshopでドキュメントを開き、レイヤーパネルの下部にある[新しいレイヤー]ボタンをクリックすることです。新しいレイヤーには、自動的に「レイヤー450」または現在ドキュメント内にあるレイヤーの数より1つ多い名前が付けられます。

0
JfgDev

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
SpaceDog

以下をせよ:

  1. 編集ウィンドウの左下隅にあるステータスバーから、右向き矢印をクリックします。

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

  1. 表示されるポップアップメニューから「レイヤー数」を選択します。
  2. ステータスバーのレイヤー数を読み取ります。

The status bar reads: 108 layers, 18 groups

0
Goosfraba