如何在 psd 文件中获取图层关系或组信息?
How to get layer relation or group info in a psd file?
我正在尝试从 C# 项目中的 psd 文件获取图层信息。
通过使用 Paint.Net 或 MagickImage 的 PSD 插件,我能够获得每一层的位置、大小、内容和一些视觉属性。
但是我找不到可以说明层之间关系的属性或函数。
有没有办法找出哪一层是另一层的父层?或者哪一层与另一层在同一组中?
使用Paint.Net的PSD插件,层关系可以从每个层的AdditionalInfo中找到。
- PSDFile.Layers 包含图层的有序列表(与 PhotoShop 相比顺序相反)
- 对于每个Layer,如果它的AdditionalInfo中有LayerSectionInfo 属性,那么它是重新创建层树的重要节点。
- 找出Layer.AdditionalInfo[LayerSectionInfo的索引].SectionType的LayerSectionType。
- 如果是OpenFolder或ClosedFolder,那么它就是一个父层和一个打开标签,它后面的层是它的子层;
- 如果是SectionDivider,那么它是一个关闭标签层,表示当前层组结束;
- 如果LayerSectionInfo不存在,则为普通层节点
例如,图层如下所示:
(OF 表示 OpenFolder,L(SD) 表示图层,即 SectionDivider)
[A(OF), A0, A1(OF), A10, L(SD), L(SD), B(OF), B0(OF), B00, L(SD), B1, L (标准差)]
可以翻译成这层树:
- 一个
- A0
- A1
- A10
- 乙
- B0
- B00
- B1
我正在尝试从 C# 项目中的 psd 文件获取图层信息。
通过使用 Paint.Net 或 MagickImage 的 PSD 插件,我能够获得每一层的位置、大小、内容和一些视觉属性。
但是我找不到可以说明层之间关系的属性或函数。
有没有办法找出哪一层是另一层的父层?或者哪一层与另一层在同一组中?
使用Paint.Net的PSD插件,层关系可以从每个层的AdditionalInfo中找到。
- PSDFile.Layers 包含图层的有序列表(与 PhotoShop 相比顺序相反)
- 对于每个Layer,如果它的AdditionalInfo中有LayerSectionInfo 属性,那么它是重新创建层树的重要节点。
- 找出Layer.AdditionalInfo[LayerSectionInfo的索引].SectionType的LayerSectionType。
- 如果是OpenFolder或ClosedFolder,那么它就是一个父层和一个打开标签,它后面的层是它的子层;
- 如果是SectionDivider,那么它是一个关闭标签层,表示当前层组结束;
- 如果LayerSectionInfo不存在,则为普通层节点
例如,图层如下所示:
(OF 表示 OpenFolder,L(SD) 表示图层,即 SectionDivider)
[A(OF), A0, A1(OF), A10, L(SD), L(SD), B(OF), B0(OF), B00, L(SD), B1, L (标准差)]
可以翻译成这层树:
- 一个
- A0
- A1
- A10
- 乙
- B0
- B00
- B1
- B0