libreflow.extensions.sk.export-psd-layers 1.0.0__tar.gz → 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/CHANGELOG.md +6 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0/src/libreflow.extensions.sk.export_psd_layers.egg-info → libreflow_extensions_sk_export_psd_layers-1.0.1}/PKG-INFO +7 -1
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/setup.py +2 -1
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/export_psd_layers/_version.py +3 -3
- libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/LFS_PSD_export_to_PNG.jsx +212 -0
- libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/__init__.py +0 -0
- libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/json.jsx +1399 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow.extensions.sk.export_psd_layers.egg-info}/PKG-INFO +7 -1
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/SOURCES.txt +4 -1
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/MANIFEST.in +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/README.md +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/setup.cfg +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/__init__.py +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/__init__.py +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/__init__.py +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/export_psd_layers/__init__.py +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/dependency_links.txt +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/top_level.txt +0 -0
- {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: libreflow.extensions.sk.export_psd_layers
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Home-page: https://gitlab.com/lfs.coop/libreflow/libreflow_launcher
|
|
5
5
|
Author: Thomas Thiebaut
|
|
6
6
|
Author-email: autor@les-fees-speciales.coop
|
|
@@ -48,6 +48,12 @@ Types of changes
|
|
|
48
48
|
|
|
49
49
|
## [Unreleased]
|
|
50
50
|
|
|
51
|
+
## [1.0.1] - 2025-04-04
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
* including .jsx files in setup.py
|
|
56
|
+
|
|
51
57
|
## [1.0.0] - 2025-03-27
|
|
52
58
|
|
|
53
59
|
### Added
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-
|
|
11
|
+
"date": "2025-04-04T15:24:34+0200",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.0.
|
|
14
|
+
"full-revisionid": "546efb457d10e00353213d9fe7120df41ce6af6f",
|
|
15
|
+
"version": "1.0.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// Including JSON object for JSON file creation
|
|
2
|
+
#include "json.jsx";
|
|
3
|
+
// --------------------------------------
|
|
4
|
+
// Main function who export layers to PNG
|
|
5
|
+
// --------------------------------------
|
|
6
|
+
function _LFS_exportPSDLayersToPNG()
|
|
7
|
+
{
|
|
8
|
+
var theDoc = app.activeDocument; // Get the active document name
|
|
9
|
+
var folderName = theDoc.name.replace(/\..+$/, '') // Remove the *.psd extension from the active document name
|
|
10
|
+
|
|
11
|
+
$.writeln(folderName)
|
|
12
|
+
|
|
13
|
+
var pathToTheFile = app.activeDocument.path+'/'+folderName;
|
|
14
|
+
pathToTheFile = pathToTheFile.replace("_psb","_render")
|
|
15
|
+
$.writeln(pathToTheFile)
|
|
16
|
+
|
|
17
|
+
//~
|
|
18
|
+
var layersPrefix = folderName+"-"; // Add a dash after the name of the document
|
|
19
|
+
|
|
20
|
+
var data = {
|
|
21
|
+
from : theDoc.name,
|
|
22
|
+
layers : [],
|
|
23
|
+
hidden_layers : [],
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var allLayersList = createLayersTree(theDoc, data); // Collect all layers name
|
|
27
|
+
var layerCount = allLayersList.length; // Number of Layer in PSD file
|
|
28
|
+
var windowsContent = ""; // Placeholder for the UI content
|
|
29
|
+
|
|
30
|
+
windowsContent = "window{text:'Exporting each layer to PNG images',bounds:[100,100,800,160],"
|
|
31
|
+
windowsContent += "bar:Progressbar{bounds:[20,10,680,50] , value:0,maxvalue:100}";
|
|
32
|
+
windowsContent += "};" // Filling the UI;
|
|
33
|
+
|
|
34
|
+
hideAllLayers(allLayersList);
|
|
35
|
+
|
|
36
|
+
var win = new Window(windowsContent); // Creation of the main window with a simple progress bar
|
|
37
|
+
|
|
38
|
+
win.center();
|
|
39
|
+
win.show();
|
|
40
|
+
|
|
41
|
+
for (var i = 0; i < layerCount; i++)
|
|
42
|
+
{
|
|
43
|
+
allLayersList[i].visible = 1; // Show one layer
|
|
44
|
+
savePNGImage(layersPrefix+allLayersList[i].name,pathToTheFile); // Save it PNG
|
|
45
|
+
win.bar.value = (i+1)*(100/layerCount); // Update the progress bar
|
|
46
|
+
win.text = 'Exporting layer "'+allLayersList[i].name+'" to PNG image ('+(i+1)+'/'+layerCount+'). In progress ... please wait.'; // Update title of the window
|
|
47
|
+
app.refresh(); // Force the refresh of photoshop interface
|
|
48
|
+
allLayersList[i].visible = 0; // hide on layer
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
createJSONFile(data, pathToTheFile);
|
|
52
|
+
|
|
53
|
+
showAllLayers();
|
|
54
|
+
win.close();
|
|
55
|
+
theDoc.save()
|
|
56
|
+
executeAction(app.charIDToTypeID('quit'), undefined, DialogModes.NO);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
// ---------------------------------
|
|
61
|
+
// Get render path
|
|
62
|
+
// ---------------------------------
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
// ---------------------------------
|
|
67
|
+
// List all 'ArtLayers' in the stack
|
|
68
|
+
// ---------------------------------
|
|
69
|
+
function createLayersTree(document, data)
|
|
70
|
+
{
|
|
71
|
+
var list = []; //Create an array to store each object
|
|
72
|
+
|
|
73
|
+
for (var i = 0; i < document.layers.length; i++)
|
|
74
|
+
{
|
|
75
|
+
if (document.layers[i].typename == 'ArtLayer' || 'LayerSet') //Filter to only list layers of "ArtLayer" or "LayerSet" type;
|
|
76
|
+
{
|
|
77
|
+
list.push (document.layers[i]); // Fill the list
|
|
78
|
+
data["layers"].push(document.layers[i].name)
|
|
79
|
+
if (document.layers[i].visible == false)
|
|
80
|
+
{
|
|
81
|
+
data["hidden_layers"].push(document.layers[i].name)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//~ else if (obj[i].typename == 'LayerSet')
|
|
85
|
+
//~ {
|
|
86
|
+
//~ $.writeln(list)
|
|
87
|
+
//~ loopLayers(obj[i].layers,list);
|
|
88
|
+
//~ $.writeln(list)
|
|
89
|
+
//~ }
|
|
90
|
+
}
|
|
91
|
+
return list; // Return the array
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
// ---------------------------------------------------------------------------------
|
|
96
|
+
// Switch visibility of all layers to "On" using "actions" (to speed up the process)
|
|
97
|
+
// ---------------------------------------------------------------------------------
|
|
98
|
+
function showAllLayers()
|
|
99
|
+
{
|
|
100
|
+
var doc = activeDocument;
|
|
101
|
+
|
|
102
|
+
var ref = new ActionReference();
|
|
103
|
+
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
|
|
104
|
+
var desc = new ActionDescriptor();
|
|
105
|
+
desc.putReference(cTID('null'), ref);
|
|
106
|
+
executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
|
|
107
|
+
|
|
108
|
+
var ref = new ActionReference();
|
|
109
|
+
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
|
|
110
|
+
var list = new ActionList();
|
|
111
|
+
list.putReference(ref);
|
|
112
|
+
var desc = new ActionDescriptor();
|
|
113
|
+
desc.putList(cTID('null'), list);
|
|
114
|
+
executeAction(cTID('Shw '), desc, DialogModes.NO);
|
|
115
|
+
|
|
116
|
+
var background = doc.layers[doc.layers.length -1];
|
|
117
|
+
if (background.isBackgroundLayer)
|
|
118
|
+
{
|
|
119
|
+
background.visible = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
// ---------------------------------------------------------------------------------
|
|
125
|
+
// Switch visibility of all layers to "Off" using "actions" (to speed up the process)
|
|
126
|
+
// ---------------------------------------------------------------------------------
|
|
127
|
+
function hideAllLayers(layers) {
|
|
128
|
+
//~ var doc = app.activeDocument;
|
|
129
|
+
//~
|
|
130
|
+
//~ var ref = new ActionReference();
|
|
131
|
+
//~ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
|
|
132
|
+
//~ var desc = new ActionDescriptor();
|
|
133
|
+
//~ desc.putReference(cTID('null'), ref);
|
|
134
|
+
//~ executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
|
|
135
|
+
//~
|
|
136
|
+
//~ var ref = new ActionReference();
|
|
137
|
+
//~ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
|
|
138
|
+
//~ var list = new ActionList();
|
|
139
|
+
//~ list.putReference(ref);
|
|
140
|
+
//~ var desc = new ActionDescriptor();
|
|
141
|
+
//~ desc.putList(cTID('null'), list);
|
|
142
|
+
//~ executeAction(cTID('Hd '), desc, DialogModes.NO);
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
var layerCount = layers.length;
|
|
146
|
+
for (var i = 0; i < layerCount; i++)
|
|
147
|
+
{
|
|
148
|
+
layers[i].visible = 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
var background = layers[layers.length -1];
|
|
153
|
+
if (background.isBackgroundLayer) {
|
|
154
|
+
background.visible = false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// ------------------------------------
|
|
159
|
+
// Save the document to a new PNG image
|
|
160
|
+
// ------------------------------------
|
|
161
|
+
function savePNGImage(nameOfFile,pathToTheFile)
|
|
162
|
+
{
|
|
163
|
+
var folderToCreate = Folder(pathToTheFile); // Define the path to the new folder
|
|
164
|
+
var theFullAbsolutePath = pathToTheFile+"/"+nameOfFile+".png"; // Define the full path to the new PNG file
|
|
165
|
+
var opts; // Prepare export options
|
|
166
|
+
|
|
167
|
+
if(!folderToCreate.exists)
|
|
168
|
+
{
|
|
169
|
+
folderToCreate.create(); // Create the folder if not existing
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
opts = new ExportOptionsSaveForWeb();
|
|
173
|
+
opts.format = SaveDocumentType.PNG; // Define type "PNG"
|
|
174
|
+
opts.PNG8 = false; // Because we want a "PNG24" (in fact "PNG32" because we want to keep the Alpha channel)
|
|
175
|
+
opts.transparency = true; // True by default but ... just to be sure
|
|
176
|
+
|
|
177
|
+
pngFile = new File(theFullAbsolutePath); // Define a new file object
|
|
178
|
+
app.activeDocument.exportDocument(pngFile, ExportType.SAVEFORWEB, opts); // Now, it's time to export the PNG for good
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
//------------------------------------------------------
|
|
182
|
+
// Write layer order in .txt file
|
|
183
|
+
//-------------------------------------------------------
|
|
184
|
+
|
|
185
|
+
function createJSONFile(object, path){
|
|
186
|
+
|
|
187
|
+
//define file
|
|
188
|
+
var jsonFile = new File(path+"/layers.json")
|
|
189
|
+
//jsonFile.close();
|
|
190
|
+
|
|
191
|
+
//~ if(jsonFile.exists){
|
|
192
|
+
//~ jsonFile.remove()
|
|
193
|
+
//~ }
|
|
194
|
+
//open file
|
|
195
|
+
jsonFile.open("w")
|
|
196
|
+
|
|
197
|
+
//write to file convert to string
|
|
198
|
+
jsonFile.write(JSON.lave(object));
|
|
199
|
+
|
|
200
|
+
//close file
|
|
201
|
+
jsonFile.close()
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
// ---------------------------------------------------------------
|
|
207
|
+
// Photoshop utilities : Convert "charID" to "TypeID" and reversly
|
|
208
|
+
// ---------------------------------------------------------------
|
|
209
|
+
function cTID(s) {return app.charIDToTypeID(s);}
|
|
210
|
+
function sTID(s) {return app.stringIDToTypeID(s);}
|
|
211
|
+
|
|
212
|
+
_LFS_exportPSDLayersToPNG(); // Finaly ... execute the script
|