我正试图从C#项目中的psd文件中获取层信息。
通过使用Paint.Net或MagickImage的PSD插件,我可以获得每个层的位置、大小、内容和一些视觉属性。
但我找不到能说明层之间关系的性质或函数。
有没有办法找出哪一层是另一层的父层?或者哪一层在另一层的同一组中?
使用Paint.Net的PSD插件,可以从每个层的AdditionalInfo中找到层关系。
- PSDFile.Layers包含层的有序列表(与PhotoShop相反)
- 对于每个层,如果其AdditionalInfo属性中有LayerSectionInfo,则它是重新创建层树的重要节点
- 查找Layer.AdditionalInfo的LayerSectionType[LayerSection信息的索引].SectionType。
- 如果它是OpenFolder或ClosedFolder,则它是父层和打开标记,其后面的层是其子层
- 如果它是SectionDivider,则它是一个闭合标记图层,表示当前图层组的结束
- 如果LayerSectionInfo不存在,则它是一个公共层节点
例如,层看起来像这样:
(对于OpenFolder为OF,对于作为SectionDivider的层为L(SD))
[A(OF),A0,A1(OF)
可以转换为这个层树:
- A
- A0
- A1
- A10
- B
- B0
- B00
- B1
- B0