レイヤーグループの作成

レイヤーグループは1つ以上のレイヤーで構成され、類似したレイヤーまたは関連するレイヤーを整理するのに役立ちます。Aspose.PSD for .NETを使用して、レイヤーグループを作成することができます。そのために、PsdImageクラスに新しいメソッドAddLayerGroupが追加され、レイヤーグループを追加するために使用できます。

レイヤーグループを作成する手順は以下の通りです:

以下のコードスニペットはレイヤーグループを作成する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string inputFile = dataDir + "ButtonTemp.psd";
var createOptions = new PsdOptions();
createOptions.Source = new FileCreateSource(inputFile, false);
createOptions.Palette = new PsdColorPalette(new Color[] { Color.Green });
using (var psdImage = (PsdImage)Image.Create(createOptions, 500, 500))
{
LayerGroup group1 = psdImage.AddLayerGroup("Group 1", 0, true);
Layer layer1 = new Layer(psdImage);
layer1.Name = "Layer 1";
group1.AddLayer(layer1);
LayerGroup group2 = group1.AddLayerGroup("Group 2", 1);
Layer layer2 = new Layer(psdImage);
layer2.Name = "Layer 2";
group2.AddLayer(layer2);
Layer layer3 = new Layer(psdImage);
layer3.Name = "Layer 3";
group2.AddLayer(layer3);
Layer layer4 = new Layer(psdImage);
layer4.Name = "Layer 4";
group1.AddLayer(layer4);
psdImage.Save(dataDir + "LayerGroups_out.psd");
}

レイヤーの名前変更

任意の名前を使用できますが、通常の慣行はそのレイヤーにあるオブジェクトや要素の一般的な説明を使用することです。この記事では、Aspose.PSD for .NETを使用してレイヤーの名前を変更する方法を示しています。そのために、Layerクラスに表示名を正しく表示するための新しいプロパティDisplayNameが追加されました。Photoshopがレイヤー名をNameプロパティを使用して保存すると、韓国語の文字はASCIIでバイト63 ‘?‘として保存されることが観察されています。そのため、レイヤー名を適切に表示したい場合はDisplayNameプロパティを使用してください。Nameプロパティは韓国語の文字をサポートしていないためです。

以下のコードサンプルは、レイヤーの名前を変更する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_PSD();
// make changes in layer names and save it
using (var image = (PsdImage)Image.Load(dataDir + "Korean_layers.psd"))
{
for (int i = 0; i < image.Layers.Length; i++)
{
var layer = image.Layers[i];
// set new value into DisplayName property
layer.DisplayName += "_changed";
}
image.Save(dataDir + "Korean_layers_output.psd");
}

リンクレイヤーのサポート

レイヤーをリンクすることは、レイヤーをグループ化することと同じです。2つ以上のレイヤーをリンクすると、リンクされたレイヤーの両方に特定の変更を行うことが可能になります。たとえば、1つのレイヤーに変換を適用すると、他のすべてのリンクされたレイヤーにも適用されます。この記事では、Aspose.PSDを使用してリンクされたレイヤーの取得とリンク解除する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
{
Layer[] layers = psd.Layers;
// link all layers in one linked group
short layersLinkGroupId = psd.LinkedLayersManager.LinkLayers(layers);
// gets id for one layer
short linkGroupId = psd.LinkedLayersManager.GetLinkGroupId(layers[0]);
if (layersLinkGroupId != linkGroupId)
{
throw new Exception("layersLinkGroupId and linkGroupId are not equal.");
}
// gets all linked layers by link group id.
Layer[] linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId);
// unlink each layer from group
foreach (var linkedLayer in linkedLayers)
{
psd.LinkedLayersManager.UnlinkLayer(linkedLayer);
}
// retrieves NULL for a link group ID that has no layers in the group.
linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId);
if (linkedLayers != null)
{
throw new Exception("The linkedLayers field is not NULL.");
}
psd.Save(dataDir + "LinkedLayerexample_output.psd");
}