Ziel:Photoshop-Ebene x/y-Center Registrierung Punktkoordinaten
Entwerfen Sie ein Skript, das ich innerhalb von Photoshop laufen kann, die mir zur Verfügung stellen die x- und y-Koordinaten jeder Schicht in der PSD-Datei, und dann Speichern Sie das in einer Textdatei, die ich zum Extrahieren der Daten verwenden kann.
Fortschritt:
Ich habe bereits festgestellt, ein Skript, das dies zu erreichen, und machte meine eigenen Ergänzungen zu.
Ausgabe:
Mein Problem ist, dass ich nicht ein sehr fortschrittliches Coder bin, Ich versuche, die x- und y-Koordinaten des Mittelregistrierungspunkt der Schicht zu bekommen, nicht links oben. Ich habe stundenlang geforscht (vielleicht habe ich Google nicht die richtigen Fragen gestellt), um das herauszufinden. Ich weiß, dass mein Verständnis nicht mit den tatsächlichen Softwareentwicklern übereinstimmt, und obwohl ich das respektiere, gibt es keinen Entwickler, der hier arbeitet, und ich bin irgendwie allein gelassen, um das herauszufinden. Ich habe ein wenig Javascript studiert, also habe ich genug verstanden, um kleine Ergänzungen zum folgenden Code zu machen.
Der Code:
// Bring application forward
app.bringToFront();
// Set active Document variable and decode name for output
var docRef = app.activeDocument;
var docName = decodeURI(activeDocument.name);
// Define pixels as unit of measurement
var defaultRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
// Define variable for the number of layers in the active document
var layerNum = app.activeDocument.artLayers.length;
// Define variable for the active layer in the active document
var layerRef = app.activeDocument.activeLayer;
// Define varibles for x and y of layers
var x = layerRef.bounds[0].value;
var y = layerRef.bounds[1].value;
var coords = "";
// Loop to iterate through all layers
function recurseLayers(currLayers) {
for (var i = 0; i < currLayers.layers.length; i++) {
layerRef = currLayers.layers[i];
x = layerRef.bounds[0].value;
y = layerRef.bounds[1].value;
coords += layerRef.name + ": " + x + "x" + "," + y + "y" + "\n";
//test if it's a layer set
if (isLayerSet(currLayers.layers[i])) {
recurseLayers(currLayers.layers[i]);
}
}
}
//a test for a layer set
function isLayerSet(layer) {
try {
if (layer.layers.length > 0) {
return true;
}
}
catch(err) {
return false;
}
}
// Ask the user for the folder to export to
var FPath = Folder.selectDialog("Save exported coordinates to");
// Detect line feed type
if ($.os.search(/windows/i) !== -1) {
fileLineFeed = "Windows";
}
else {
fileLineFeed = "Macintosh";
}
// Export to txt file
function writeFile(info) {
try {
var f = new File(FPath + "/" + docName + ".txt");
f.remove();
f.open('a');
f.lineFeed = fileLineFeed;
f.write(info);
f.close();
}
catch(e){}
}
// Run the functions
recurseLayers(docRef);
preferences.rulerUnits = defaultRulerUnits;
// Set preferences back to user's defaults
writeFile(coords);
// Show results
if (FPath == null) {
alert("Export aborted", "Canceled");
}
else {
alert("Exported " + layerNum + " layer's coordinates to " + FPath + "/" +
docName + ".txt " + "using " + fileLineFeed + " line feeds.", "Success!");
}
Die Lösung Ich suche bin, ist das Zentrum einer Schicht zu finden Feld (oder Bildbegrenzungsrahmen) in Form von x und y-Koordinaten begrenzt, dass Sie normalerweise manuell durch Kopieren und Einfügen aus photoshops Symbolleiste erhalten müssen. – Mike