Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
psd-parse
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
劳工
psd-parse
Commits
4a712d00
Commit
4a712d00
authored
Sep 27, 2019
by
rockyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
文件名使用hash字符串
节点增加uuid字段
parent
f112f438
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
3 additions
and
1 deletion
+3
-1
generator.cjs.js
samples/zeroing-demo/generator.cjs.js
+1
-0
generator.cjs.js.map
samples/zeroing-demo/generator.cjs.js.map
+1
-1
zeroing.js
src/zeroing.js
+1
-0
No files found.
samples/zeroing-demo/generator.cjs.js
View file @
4a712d00
...
@@ -79,6 +79,7 @@ async function execute(psdFile, options) {
...
@@ -79,6 +79,7 @@ async function execute(psdFile, options) {
let
viewRoot
=
{
let
viewRoot
=
{
name
:
path
.
basename
(
psdFile
,
'.psd'
),
name
:
path
.
basename
(
psdFile
,
'.psd'
),
type
:
'node'
,
type
:
'node'
,
uuid
:
generateUUID
(),
};
};
const
assets
=
[];
const
assets
=
[];
...
...
samples/zeroing-demo/generator.cjs.js.map
View file @
4a712d00
{
"version"
:
3
,
"file"
:
"generator.cjs.js"
,
"sources"
:
[
"../../src/psd-tree.js"
,
"../../src/utils.js"
,
"../../src/zeroing.js"
,
"generator.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-08-09.
\n
*/
\n\n
const PSD = require('psd');
\n\n
export async function getTree(psdFilePath) {\n
\t
const psd = await PSD.open(psdFilePath);
\n\t
const root = {};
\n\t
walk(psd.tree(), root);
\n\n\t
return root;
\n
}
\n\n
function walk(psNode, dataNode) {\n
\t
const {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};
\n\t
const {left, top, width, height, name, layer: {opacity, visible}} = psNode;
\n\t
const x = left - pLeft;
\n\t
const y = top - pTop;
\n\n\t
Object.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});
\n\t
if (psNode.children() && psNode.children().length > 0){\n
\t\t
dataNode.children = [];
\n\t
}
\n\n\t
let children = psNode.children();
\n\t
for (let i = children.length - 1; i >= 0; i--) {\n
\t\t
const childPsNode = children[i];
\n\n\t\t
const childDataNode = {};
\n\t\t
dataNode.children.push(childDataNode);
\n\t\t
walk(childPsNode, childDataNode)
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-08-10.
\n
*/
\n\n
export async function walkNode(node, callback, includeSelf = false) {\n
\t
if (includeSelf) {\n
\t\t
await callback(node, null);
\n\t
}
\n\t
if (node.children && node.children.length > 0) {\n
\t\t
for (let childNode of node.children) {\n
\t\t\t
await callback(childNode, node);
\n\t\t\t
const result = await walkNode(childNode, callback);
\n\t\t\t
if (result === true)
{
\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
export async function walkObject(obj, callback) {\n
\t
if(typeof obj ===
\"
object
\"
){\n
\t\t
for (let key of Object.keys(obj)) {\n
\t\t\t
const value = obj[key];
\n\t\t\t
await callback(key, value, obj);
\n\t\t\t
const result = await walkObject(value, callback);
\n\t\t\t
if (result === true)
{
\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-09-26.
\n
*
\n
* 导出zeroing的视图
\n
*/
\n\n
import
{
getTree
}
from
\"
./psd-tree
\"
;
\n
import
{
walkNode
}
from
\"
./utils
\"
;
\n
import path from 'path'
\n
import Color from 'color'
\n
import generateUUID from 'uuid/v4'
\n
import fs from
\"
fs-extra
\"
;
\n
import hash from 'object-hash';
\n\n
export async function execute(psdFile, options) {\n
\t
const
{
\n\t\timagesPath,\n\t
}
= options;
\n\n\t
const tree = await getTree(psdFile);
\n\n\t
let viewRoot = {\n
\t\t
name: path.basename(psdFile, '.psd'),
\n\t\t
type: 'node',
\n\t
};
\n\n\t
const assets = [];
\n\n\t
await walkNode(tree, async function (node, parent) {\n
\t\t
const {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;
\n\t\t
let properties = {\n
\t\t\t
width, height, alpha, visible,
\n\t\t
};
\n\t\t
let viewNode = {\n
\t\t\t
name,
\n\t\t\t
properties,
\n\t\t\t
uuid: generateUUID(),
\n\t\t
};
\n\t\t
if (x !== 0) {\n
\t\t\t
properties.x = x;
\n\t\t
}
\n\t\t
if (y !== 0) {\n
\t\t\t
properties.y = y;
\n\t\t
}
\n\n\t\t
if (typeTool) {\n
\t\t\t
let fontInfo = typeTool();
\n\t\t\t
const fonts = fontInfo.fonts();
\n\t\t\t
const styles = fontInfo.styles();
\n\t\t\t
const
{
RunLengthArray
}
= fontInfo.engineData.EngineDict.StyleRun;
\n\n\t\t\t
properties.text = fontInfo.textValue;
\n\t\t\t
properties.textflow = {\n
\t\t\t\t
fonts, styles, RunLengthArray,
\n\t\t\t
};
\n\t\t\t
viewNode.type = 'label';
\n\t\t
} else if (solidColor) {\n
\t\t\t
const {r, g, b} = solidColor();
\n\t\t\t
let color = Color({r, g, b});
\n\n\t\t\t
viewNode.type = 'rect';
\n\t\t\t
properties.fillColor = '#' + color.rgbNumber().toString(16);
\n\t\t
} else {\n
\t\t\t
if (node.hasOwnProperty('children')) {\n
\t\t\t\t
viewNode.type = 'node';
\n\t\t\t
} else {\n
\t\t\t\t
viewNode.type = 'image';
\n\n\t\t\t\t
const uuid = generateUUID();
\n\t\t\t\t
const ext = '.png';
\n\n\t\t\t\t
properties.source = 'asset|' + uuid;
\n\n\t\t\t\t
const imageFilePath = path.join(imagesPath, uuid + ext);
\n\t\t\t\t
await fs.ensureDir(path.dirname(imageFilePath));
\n\t\t\t\t
let png = node.origin.toPng();
\n\t\t\t\t
let buffer = await savePng(png, imageFilePath);
\n\t\t\t\t
//await node.origin.saveAsPng(imageFilePath);
\n\n\t\t\t\t
const hashFileName = hash(buffer);
\n\t\t\t\t
const hashFilePath = path.join(imagesPath, hashFileName + ext);
\n\t\t\t\t
await fs.rename(imageFilePath, hashFilePath);
\n\n\t\t\t\t
assets.push(
{
\n\t\t\t\t\tname,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t}\n\t\t
}
\n\n\t\t
let viewParent = parent.view || viewRoot;
\n\t\t
if (!viewParent.hasOwnProperty('children')) {\n
\t\t\t
viewParent.children = [];
\n\t\t
}
\n\t\t
viewParent.children.push(viewNode);
\n\n\t\t
node.view = viewNode;
\n\t
});
\n\n\t
return {\n
\t\t
view: viewRoot,
\n\t\t
assets,
\n\t
}
\n
}
\n\n
function savePng(png, output) {\n
\t
return new Promise((resolve, reject) => {\n
\t\t
let buffer, buffers = [];
\n\t\t
png.pack()
\n\t\t\t
.on('error', reject)
\n\t\t\t
.on('data', (data) => buffers.push(data))
\n\t\t\t
.on('end', () => {\n
\t\t\t\t
buffer = Buffer.concat(buffers)
\n\t\t\t
})
\n\t\t\t
.pipe(fs.createWriteStream(output))
\n\t\t\t
.on('finish', () =>
{
\n\t\t\t\tresolve(buffer);\n\t\t\t});\n\t});\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-08-10.
\n
*/
\n\n
import
{
toZeroing
}
from
\"
../../src/index
\"
;
\n\n
(async function generate() {\n
\t
const imagesPath = 'zeroing-demo/images_' + Date.now();
\n\n\t
const {view, assets} = await toZeroing('psd/test.psd',
{
\n\t\timagesPath,\n\t});\n\n\tconsole.log(assets);\n\tconsole.log(view);\n})();\n"],"names":["toZeroing"],"mappings":"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"
}
{
"version"
:
3
,
"file"
:
"generator.cjs.js"
,
"sources"
:
[
"../../src/psd-tree.js"
,
"../../src/utils.js"
,
"../../src/zeroing.js"
,
"generator.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-08-09.
\n
*/
\n\n
const PSD = require('psd');
\n\n
export async function getTree(psdFilePath) {\n
\t
const psd = await PSD.open(psdFilePath);
\n\t
const root = {};
\n\t
walk(psd.tree(), root);
\n\n\t
return root;
\n
}
\n\n
function walk(psNode, dataNode) {\n
\t
const {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};
\n\t
const {left, top, width, height, name, layer: {opacity, visible}} = psNode;
\n\t
const x = left - pLeft;
\n\t
const y = top - pTop;
\n\n\t
Object.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});
\n\t
if (psNode.children() && psNode.children().length > 0){\n
\t\t
dataNode.children = [];
\n\t
}
\n\n\t
let children = psNode.children();
\n\t
for (let i = children.length - 1; i >= 0; i--) {\n
\t\t
const childPsNode = children[i];
\n\n\t\t
const childDataNode = {};
\n\t\t
dataNode.children.push(childDataNode);
\n\t\t
walk(childPsNode, childDataNode)
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-08-10.
\n
*/
\n\n
export async function walkNode(node, callback, includeSelf = false) {\n
\t
if (includeSelf) {\n
\t\t
await callback(node, null);
\n\t
}
\n\t
if (node.children && node.children.length > 0) {\n
\t\t
for (let childNode of node.children) {\n
\t\t\t
await callback(childNode, node);
\n\t\t\t
const result = await walkNode(childNode, callback);
\n\t\t\t
if (result === true)
{
\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
export async function walkObject(obj, callback) {\n
\t
if(typeof obj ===
\"
object
\"
){\n
\t\t
for (let key of Object.keys(obj)) {\n
\t\t\t
const value = obj[key];
\n\t\t\t
await callback(key, value, obj);
\n\t\t\t
const result = await walkObject(value, callback);
\n\t\t\t
if (result === true)
{
\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-09-26.
\n
*
\n
* 导出zeroing的视图
\n
*/
\n\n
import
{
getTree
}
from
\"
./psd-tree
\"
;
\n
import
{
walkNode
}
from
\"
./utils
\"
;
\n
import path from 'path'
\n
import Color from 'color'
\n
import generateUUID from 'uuid/v4'
\n
import fs from
\"
fs-extra
\"
;
\n
import hash from 'object-hash';
\n\n
export async function execute(psdFile, options) {\n
\t
const
{
\n\t\timagesPath,\n\t
}
= options;
\n\n\t
const tree = await getTree(psdFile);
\n\n\t
let viewRoot = {\n
\t\t
name: path.basename(psdFile, '.psd'),
\n\t\t
type: 'node',
\n\t\t
uuid: generateUUID(),
\n\t
};
\n\n\t
const assets = [];
\n\n\t
await walkNode(tree, async function (node, parent) {\n
\t\t
const {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;
\n\t\t
let properties = {\n
\t\t\t
width, height, alpha, visible,
\n\t\t
};
\n\t\t
let viewNode = {\n
\t\t\t
name,
\n\t\t\t
properties,
\n\t\t\t
uuid: generateUUID(),
\n\t\t
};
\n\t\t
if (x !== 0) {\n
\t\t\t
properties.x = x;
\n\t\t
}
\n\t\t
if (y !== 0) {\n
\t\t\t
properties.y = y;
\n\t\t
}
\n\n\t\t
if (typeTool) {\n
\t\t\t
let fontInfo = typeTool();
\n\t\t\t
const fonts = fontInfo.fonts();
\n\t\t\t
const styles = fontInfo.styles();
\n\t\t\t
const
{
RunLengthArray
}
= fontInfo.engineData.EngineDict.StyleRun;
\n\n\t\t\t
properties.text = fontInfo.textValue;
\n\t\t\t
properties.textflow = {\n
\t\t\t\t
fonts, styles, RunLengthArray,
\n\t\t\t
};
\n\t\t\t
viewNode.type = 'label';
\n\t\t
} else if (solidColor) {\n
\t\t\t
const {r, g, b} = solidColor();
\n\t\t\t
let color = Color({r, g, b});
\n\n\t\t\t
viewNode.type = 'rect';
\n\t\t\t
properties.fillColor = '#' + color.rgbNumber().toString(16);
\n\t\t
} else {\n
\t\t\t
if (node.hasOwnProperty('children')) {\n
\t\t\t\t
viewNode.type = 'node';
\n\t\t\t
} else {\n
\t\t\t\t
viewNode.type = 'image';
\n\n\t\t\t\t
const uuid = generateUUID();
\n\t\t\t\t
const ext = '.png';
\n\n\t\t\t\t
properties.source = 'asset|' + uuid;
\n\n\t\t\t\t
const imageFilePath = path.join(imagesPath, uuid + ext);
\n\t\t\t\t
await fs.ensureDir(path.dirname(imageFilePath));
\n\t\t\t\t
let png = node.origin.toPng();
\n\t\t\t\t
let buffer = await savePng(png, imageFilePath);
\n\t\t\t\t
//await node.origin.saveAsPng(imageFilePath);
\n\n\t\t\t\t
const hashFileName = hash(buffer);
\n\t\t\t\t
const hashFilePath = path.join(imagesPath, hashFileName + ext);
\n\t\t\t\t
await fs.rename(imageFilePath, hashFilePath);
\n\n\t\t\t\t
assets.push(
{
\n\t\t\t\t\tname,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t}\n\t\t
}
\n\n\t\t
let viewParent = parent.view || viewRoot;
\n\t\t
if (!viewParent.hasOwnProperty('children')) {\n
\t\t\t
viewParent.children = [];
\n\t\t
}
\n\t\t
viewParent.children.push(viewNode);
\n\n\t\t
node.view = viewNode;
\n\t
});
\n\n\t
return {\n
\t\t
view: viewRoot,
\n\t\t
assets,
\n\t
}
\n
}
\n\n
function savePng(png, output) {\n
\t
return new Promise((resolve, reject) => {\n
\t\t
let buffer, buffers = [];
\n\t\t
png.pack()
\n\t\t\t
.on('error', reject)
\n\t\t\t
.on('data', (data) => buffers.push(data))
\n\t\t\t
.on('end', () => {\n
\t\t\t\t
buffer = Buffer.concat(buffers)
\n\t\t\t
})
\n\t\t\t
.pipe(fs.createWriteStream(output))
\n\t\t\t
.on('finish', () =>
{
\n\t\t\t\tresolve(buffer);\n\t\t\t});\n\t});\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-08-10.
\n
*/
\n\n
import
{
toZeroing
}
from
\"
../../src/index
\"
;
\n\n
(async function generate() {\n
\t
const imagesPath = 'zeroing-demo/images_' + Date.now();
\n\n\t
const {view, assets} = await toZeroing('psd/test.psd',
{
\n\t\timagesPath,\n\t});\n\n\tconsole.log(assets);\n\tconsole.log(view);\n})();\n"],"names":["toZeroing"],"mappings":"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"
}
\ No newline at end of file
\ No newline at end of file
src/zeroing.js
View file @
4a712d00
...
@@ -86,6 +86,7 @@ export async function execute(psdFile, options) {
...
@@ -86,6 +86,7 @@ export async function execute(psdFile, options) {
name
,
name
,
ext
,
ext
,
uuid
,
uuid
,
hash
:
hashFileName
,
});
});
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment