照片是一种非常有用的反映信息的方式。 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# 代码完全一致:
使用 C# 在 PSD 文件中添加现有填充层
我们已经了解了如何创建和添加新的填充层。让我们看看如何从现有的 Photoshop 文件中添加图层。以下是添加现有填充层的可能性:
i) 使用 C# 添加带有图案填充的填充层
图案填充可能有图像、线条或阴影来填充该区域。您需要按照以下步骤在 PSD 图像中添加带有 Patten Fill 的图层:
- 加载源 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 的集合
- 声明 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 });
}
}
此代码片段将生成五个不同的文件,每个文件在 PSD 文件的图层中使用不同类型的渐变填充。
iii) 使用 C# 添加带有颜色填充的填充层
您可以在 Photoshop 文档(一个 PSD 文件)中添加具有颜色填充的图层。按照以下步骤添加或创建具有颜色填充的填充层:
- 加载源 PSD 图像
- 检查所有图层并找到FillLayer
- 读取图层的填充设置
- 设置填充颜色并更新图层
- 保存 PSD 图像
下面的代码片段基于上述步骤,展示了如何使用 C# 在 Photoshop Document 中添加填充层:
// 如需完整的示例和数据文件,请访问 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 .NET API 提供了许多其他令人兴奋的功能。如有任何疑问,请随时通过 免费支持论坛 与我们联系。