.psdにあるレイヤーの数を調べる方法はありますか?
ひどく遅くなっている.psdsがあります。 20〜30のレイヤーコンプと不明な数のレイヤーがあります。 1000? 5,0000?知りません。
これは、フォトショップがどの時点で窒息し始めるのかを確認し始めるためです。フォトショップで使用可能なメモリを90個使用すると、11 GBがすぐに占有され、他の目的でボックスの速度が低下します。50%(7 GB)のままにすると、最小のレイヤーでも複製するときに一時停止が発生します(チェックボックス)。
これには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)))
考えてみてください。Macを使用している場合は、ファイルを開かなくてもレイヤーのすべての名前が一覧表示されるため、Finderのファイル情報(cmd-i)が役立つ場合があります。これを行番号付きのテキストエディタにコピーし、すべてのカンマを改行に置き換えることができます。行番号はレイヤーの数を明らかにします(レイヤー名のコンマで何が起こるかはテストしていません)。
編集:
もう1つの発見: Gimp には、psdファイルのレイヤー数を表示する情報パネルがあります(メニュー:Image > Image Properties
)
残念ながら、レイヤーをカウントする自動機能はありませんが、ここではこのスクリプトを使用できます-
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でドキュメントを開き、レイヤーパネルの下部にある[新しいレイヤー]ボタンをクリックすることです。新しいレイヤーには、自動的に「レイヤー450」または現在ドキュメント内にあるレイヤーの数より1つ多い名前が付けられます。
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
以下をせよ: