1

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

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

但是我找不到可以告诉图层关系的属性或函数。

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

4

1 回答 1

0

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

  1. PSDFile.Layers 包含图层的有序列表(与 PhotoShop 相比顺序相反)
  2. 对于每个图层,如果它的 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(SD)]

可以翻译成这个层树:

  • 一个
    • A0
    • A1
      • A10
    • B0
      • B00
    • B1
于 2016-03-24T07:41:15.347 回答