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

How to get layer relation or group info in a psd file?

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

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

但是我找不到可以说明层之间关系的属性或函数。

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

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

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