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

时间:2016-03-23 07:20:07

标签: c# imagemagick layer psd paint.net

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

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

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

有没有办法找出哪一层是另一层的父级?或哪一层属于另一层?

1 个答案:

答案 0 :(得分:0)

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

  1. PSDFile.Layers包含有序的图层列表(与PhotoShop相比的逆序)
  2. Foreach Layer,如果其AdditionalInfo属性中有LayerSectionInfo,则它是重新创建层树的重要节点。
  3. 找出Layer.AdditionalInfo的LayerSectionType [LayerSectionInfo的索引] .SectionType。
    • 如果它是OpenFolder或ClosedFolder,那么它是一个父图层和一个开放标记,它后面的图层是它的子图层;
    • 如果是SectionDivider,那么它是一个close标签层,表示当前图层组的结尾;
    • 如果LayerSectionInfo不存在,那么它是一个公共层节点。
  4. 例如,图层看起来像这样:

    (对于OpenFolder的OF,对于作为SectionDivider的Layer的L(SD))

    [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