adobe-ps-scripts-loreal/test/get_layer_info.jsx
DJP 4a192a8c97 Initial commit: Adobe Photoshop API text management scripts
Local and cloud-based workflows for extracting and updating
text layers in PSD files via ExtendScript and Adobe PS API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:46:52 -05:00

81 lines
No EOL
2.4 KiB
JavaScript

// Script to extract layer information from a PSD file
#target photoshop
// Function to export layer info as JSON
function exportLayerInfo() {
try {
if (app.documents.length === 0) {
alert("No document is open!");
return;
}
var doc = app.activeDocument;
var layers = getAllLayers(doc);
var layerInfo = {
documentName: doc.name,
width: doc.width.value,
height: doc.height.value,
layers: layers
};
// Save JSON to desktop
var file = new File("~/Desktop/layer_info.json");
file.open('w');
file.write(JSON.stringify(layerInfo, null, 2));
file.close();
alert("Layer information saved to desktop as layer_info.json");
} catch (e) {
alert("Error: " + e);
}
}
// Get all layers recursively
function getAllLayers(doc) {
var layers = [];
function traverse(layerSet, path) {
for (var i = 0; i < layerSet.layers.length; i++) {
var layer = layerSet.layers[i];
var layerPath = path ? path + "/" + layer.name : layer.name;
if (layer.typename === "ArtLayer") {
var layerInfo = {
name: layer.name,
id: i + 1, // Custom ID based on index
path: layerPath,
type: layer.kind.toString(),
visible: layer.visible,
isTextLayer: layer.kind === LayerKind.TEXT
};
// Add text content if it's a text layer
if (layer.kind === LayerKind.TEXT) {
layerInfo.text = layer.textItem.contents;
}
layers.push(layerInfo);
} else if (layer.typename === "LayerSet") {
// Handle layer sets (groups)
layers.push({
name: layer.name,
id: i + 1, // Custom ID based on index
path: layerPath,
type: "LayerSet",
visible: layer.visible,
isGroup: true
});
// Traverse nested layers
traverse(layer, layerPath);
}
}
}
traverse(doc, "");
return layers;
}
// Run the script
exportLayerInfo();