如何在psd文件中获取图层关系或组信息



我正试图从C#项目中的psd文件中获取层信息。

通过使用Paint.Net或MagickImage的PSD插件,我可以获得每个层的位置、大小、内容和一些视觉属性。

但我找不到能说明层之间关系的性质或函数。

有没有办法找出哪一层是另一层的父层?或者哪一层在另一层的同一组中?

使用Paint.Net的PSD插件,可以从每个层的AdditionalInfo中找到层关系。

  1. PSDFile.Layers包含层的有序列表(与PhotoShop相反)
  2. 对于每个层,如果其AdditionalInfo属性中有LayerSectionInfo,则它是重新创建层树的重要节点
  3. 查找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

最新更新