Open3

PsdParser

いぬいぬいぬいぬ

レイヤー構造について

  • LayerRecordAndImage
    • PsdFile.LayerAndMaskInformationSection.LayerInfo.Items から取れる
    • RecordとImageの2つプロパティ
      • Record:いろんなレイヤー情報
      • Image: 画像情報
  • レイヤー種類
    • FolderやDividerと呼ばれる特殊なやつがある
    • Record.AdditionalLayerInformationsに含まれるデータのKeyで判定できる
      • めんどくさいので is SectionDividerSettingで判定するとラク
    • SectionDividerSetting
      • SectionDividerSetting.TypeLsctTypeの種類で更に種類を判定できる
        • OpenedFolder / ClosedFolder / BoundingSectionDivider / AnyOtherTypeOfLayer
      • BoundingSectionDivider
        • このレイヤー以降のレイヤーは子レイヤーになる
        • OpenedFolder or ClosedFolder までが子レイヤー
      • フォルダー構造やフォルダ入れ子は自分で解析する必要がある
  • レイヤーフラグ
    • Record.LayerFlags
      • レイヤーの非表示などの状態フラグ
      • Layer.Record.LayerFlags & LayerFlags.Visible) != LayerFlags.Visible //visible

https://github.com/manju-summoner/PsdParser/blob/94078c2ba0f559cb4395729e83bedd7a025ee856/PsdParser.Test/PsdFileTest.cs#L90
公式Testだとこのあたりを参考に。

いぬいぬいぬいぬ

注意点

  • Record.LayerNameはUnicode非対応、文字化けすることがある
    • Record.AdditionalLayerInformationsUnicodeLayerName型にしないといけない