はじめに

PsdImage.Layers は PSD または PSB ドキュメント内のすべてのレイヤーを Layer 配列として返します。この投稿では、Layer が公開する内容、すなわちジオメトリとビジュアル状態、ブレンドモードとマスクフラグの列挙、そしてレイヤーのチャンネル、マスク、ブレンド範囲を記述するメタデータクラスに焦点を当てます。


含まれる内容

レイヤークラス

各 Layer は Pascal 名 (Name)、バウンディング Rectangle (Bounds、派生した Width/Height/Top/Left/Bottom/Right)、可視性と合成状態 (IsVisible、Opacity、Clipping、BlendModeKey)、およびチャンネル数 (ChannelsCount) を保持します。Name、IsVisible、Opacity、Clipping、BlendModeKey、および四つの境界エッジはすべて PsdImage.Save() を用いて変更・書き戻しが可能です。

using var image = (PsdImage)Image.Load(inputPath);

foreach (Layer layer in image.Layers)
{
    Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
                       $"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
                       $"BlendMode={layer.BlendModeKey}");
}

ブレンドモードとマスクフラグ

BlendModeKey は BlendMode 列挙値です — ライブラリは 29 の標準 PSD ブレンドモードすべてを定義しています(Normal、Multiply、Screen、Overlay、Darken、Lighten、ColorDodge、ColorBurn、HardLight、SoftLight、Difference、Exclusion、Hue、Saturation、Color、Luminosity、その他)。別個の LayerMaskFlags 列挙(None、RelativeToLayer、Disabled、InvertedWhenBlending、UserMaskFromRenderingOtherData、UserOrVectorMasksHaveParameters)は、レイヤーがマスクを持つ場合のマスク描画動作を記述します。

チャンネルとマスクのメタデータ

Layer.ChannelInformation は、各チャンネルの ID、圧縮方式、バイト長を記述した ChannelInformation[] を返します。Layer.LayerMaskData(抽象的な LayerMaskData で、存在する場合は具体的に LayerMaskDataShort)はレイヤーマスクの境界とフラグを記述します。Layer.LayerBlendingRangesData は合成およびチャンネルごとのブレンド範囲を公開します。これら 3 つのプロパティはこの FOSS ビルドでは読み取り専用で、setter を呼び出すと NotSupportedException がスローされますが、通常の get/set プロパティとして表示されます。

Layer layer = image.Layers[0];
foreach (ChannelInformation channel in layer.ChannelInformation)
{
    Console.WriteLine($"Channel {channel.ChannelID}: {channel.CompressionMethod}, {channel.Length} bytes");
}

if (layer.LayerMaskData is { } mask)
{
    Console.WriteLine($"Mask bounds: {mask.MaskRectangle}, flags: {mask.Flags}");
}

クイックスタート

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers;
using System.Linq;

using var image = (PsdImage)Image.Load("input.psd");

var visibleLayers = image.Layers.Where(layer => layer.IsVisible);
foreach (Layer layer in visibleLayers)
{
    Console.WriteLine($"{layer.Name}: Opacity={layer.Opacity}, BlendMode={layer.BlendModeKey}");
}

サポートされているフォーマット

形式拡張子読み取り書き込み
Photoshop ドキュメントpsd✓✓
Photoshop 大型ドキュメントpsb✓✓

オープンソースとライセンス

Aspose.PSD FOSS は .NET 用に MIT ライセンスで提供されており、ロイヤリティなしで商用製品に使用でき、評価用の透かしや使用制限はありません。

このパッケージはバージョン 1.0.0 で、実行時には .NET 10.0 だけが必要です — 他にサードパーティの依存関係はありません。


はじめに

関連リソース