写真は情報を反映するための非常に便利な方法です。 PSDフォーマットファイルは画像の作成に使用されます。ただし、同じ行に沿って複数のPhotoshopファイルを編集するようなシナリオが存在する可能性があります。たとえば、写真処理アプリケーションでは、他の操作とともに、複数のPhotoshopドキュメントにレイヤーを追加する必要がある場合があります。 Aspose.PSD for .NET APIは、PSD、PSB、AI、およびその他の多くのファイル形式で動作する多くの機能を提供します。 PSDファイルへのレイヤーの追加に関連する次のユースケースを見てみましょう。
C#を使用してPhotoshopドキュメントの実行時に塗りつぶしレイヤーを追加する
Aspose.PSD for .NET APIは、PSDファイルでの塗りつぶしレイヤーの作成をサポートしています。必ずしも既存のファイルからレイヤーをロードする必要はありません。以下の手順に従って、実行時にPSDファイルに塗りつぶしレイヤーを追加します。
次のコードスニペットは、C#を使用してPhotoshopで塗りつぶしレイヤーを追加する方法を示しています。
string outputFilePath = Path.Combine(dataDir, "output.psd");
using (var image = new PsdImage(100, 100))
{
FillLayer colorFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Color);
colorFillLayer.DisplayName = "Color Fill Layer";
image.AddLayer(colorFillLayer);
FillLayer gradientFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Gradient);
gradientFillLayer.DisplayName = "Gradient Fill Layer";
image.AddLayer(gradientFillLayer);
FillLayer patternFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Pattern);
patternFillLayer.DisplayName = "Pattern Fill Layer";
patternFillLayer.Opacity = 50;
image.AddLayer(patternFillLayer);
image.Save(outputFilePath);
}
このコードスニペットは、指定されたサイズのPSDファイルを生成します。下のスクリーンショットは、上記のC#コードで設定されたとおりの3つの塗りつぶしレイヤーの名前を示しています。
C#を使用してPSDファイルに既存の塗りつぶしレイヤーを追加する
新しい塗りつぶしレイヤーの作成と追加については、すでに学習しました。既存のPhotoshopファイルからレイヤーを追加する方法を確認しましょう。既存の塗りつぶしレイヤーを追加する可能性は次のとおりです。
i)C#を使用してパターン塗りつぶしで塗りつぶしレイヤーを追加する
パターン塗りつぶしには、領域を塗りつぶすための画像、線、または影が含まれる場合があります。 PSD画像にパッテンフィルを使用してレイヤーを追加するには、以下の手順に従う必要があります。
- ソースPSDファイルをロード
- すべてのレイヤーを繰り返し処理し、FillLayerを確認します。
- レイヤーにさまざまな設定を行う
- 塗りつぶしレイヤーを編集する
- 画像を保存する
以下のコードスニペットは、C#を使用してパターン塗りつぶしで塗りつぶしレイヤーを追加する方法を示しています。
// 塗りつぶしレイヤーのサポートを追加:パターン
string sourceFileName = dataDir + "PatternFillLayer.psd";
string exportPath = dataDir + "PatternFillLayer_Edited.psd";
double tolerance = 0.0001;
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
FillLayer fillLayer = (FillLayer)layer;
PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings;
if (fillSettings.HorizontalOffset != -46 ||
fillSettings.VerticalOffset != -45 ||
fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" ||
fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
fillSettings.AlignWithLayer != true ||
fillSettings.Linked != true ||
fillSettings.PatternHeight != 64 ||
fillSettings.PatternWidth != 64 ||
fillSettings.PatternData.Length != 4096 ||
Math.Abs(fillSettings.Scale - 50) > tolerance)
{
throw new Exception("PSD Image was read wrong");
}
// 編集
fillSettings.Scale = 300;
fillSettings.HorizontalOffset = 2;
fillSettings.VerticalOffset = -20;
fillSettings.PatternData = new int[]
{
Color.Red.ToArgb(), Color.Blue.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Red.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Blue.ToArgb(), Color.Red.ToArgb()
};
fillSettings.PatternHeight = 3;
fillSettings.PatternWidth = 3;
fillSettings.AlignWithLayer = false;
fillSettings.Linked = false;
fillSettings.PatternId = Guid.NewGuid().ToString();
fillLayer.Update();
break;
}
}
im.Save(exportPath);
}
ii)C#を使用してグラデーション塗りつぶしで塗りつぶしレイヤーを追加する
Photoshopドキュメントのレイヤーを塗りつぶすためにグラデーション塗りつぶしを使用することもできます。 Aspose.PSD for .NET APIは、次の種類のグラデーション塗りつぶしをサポートしています。
- 線形
- ダイヤモンド
- 放射状の
- 反映
- 角度
グラデーション塗りつぶしでレイヤーを追加する手順は次のとおりです。
- ソースPSDファイルを読み込む
- [GradientType]のコレクションを初期化します(https://reference.aspose.com/psd/net/aspose.psd.fileformats.psd.layers.fillsettings/gradienttype)
- GradientFillSettingsクラスのインスタンスを宣言します
- GradientTypeを指定して、レイヤーを更新します
- PSD画像を保存
以下のコードスニペットは、これらの手順に基づいており、C#を使用してPhotoshopドキュメントにGradientFillレイヤーを追加する方法を示しています。
string fileName = dataDir + "FillLayerGradient.psd";
GradientType[] gradientTypes = new[]
{
GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond
};
using (var image = Image.Load(fileName))
{
PsdImage psdImage = (PsdImage)image;
FillLayer fillLayer = (FillLayer)psdImage.Layers[0];
GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings;
foreach (var gradientType in gradientTypes)
{
fillSettings.GradientType = gradientType;
fillLayer.Update();
psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}
このコードスニペットは、5つの異なるファイルを生成し、それぞれがPSDファイルのレイヤーに異なる種類のグラデーションで塗りつぶされます。
iii)C#を使用してカラーフィルでフィルレイヤーを追加する
PSDファイルであるPhotoshopドキュメントにカラーフィルを使用してレイヤーを追加できます。カラーフィルを使用してフィルレイヤーを追加または作成するには、以下の手順に従います。
- ソースPSD画像をロード
- すべてのレイヤーを確認し、FillLayerを見つけます
- レイヤーの塗りつぶし設定を読む
- 塗りつぶしの色を設定し、レイヤーを更新します
- PSD画像を保存する
以下のコードスニペットは、C#を使用してPhotoshopドキュメントに塗りつぶしレイヤーを追加する方法を示す前述の手順に基づいています。
// 完全な例とデータファイルについては、https://github.com/aspose-psd/Aspose.PSD-for-.NETにアクセスしてください。
string sourceFileName = dataDir + "ColorFillLayer.psd";
string exportPath = dataDir + "ColorFillLayer_output.psd";
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
if (fillLayer.FillSettings.FillType != FillType.Color)
{
throw new Exception("Wrong Fill Layer");
}
var settings = (IColorFillSettings)fillLayer.FillSettings;
settings.Color = Color.Red;
fillLayer.Update();
im.Save(exportPath);
break;
}
}
}
結論
この記事では、PSDファイルに塗りつぶしレイヤーを追加するための多くの可能性のいくつかを探りました。レイヤーを最初から追加する方法と、既存のPSDファイルからレイヤーを追加する方法を学習しました。さまざまな種類のグラデーション塗りつぶしレイヤーについても、例とともに説明します。 Aspose.PSD for .NETAPIによって提供される他の多くのエキサイティングな機能があります。ご不明な点がございましたら、無料サポートフォーラムからお気軽にお問い合わせください。
関連項目
- [Photoshopファイルでレイヤーを検索してレイヤーのテキストまたは画像を更新](https://blog.aspose.com/ja/2020/06/08/find-and-update-text-or-image-layers-in-psd-files- using-csharp/)