在本文中,您将学习如何使用 C# .NET 在 Photoshop 的 PSD 文件中动态查找图层并更新图层的文本或图像。
PSD 是 Adobe Photoshop 用于将其文档保存在多层结构中的默认格式,其中每一层都包含文本、图像、图形对象和其他支持的元素。当您有一个 PSD 模板并且您需要通过填充模板中的文本和图像层来创建多个结果图像时,可能会出现这种情况。这种情况的一个示例是在组织内创建员工卡。为了使这个过程自动化,我将向您展示如何:
用于查找和更新 PSD 图层的 C# 库
Aspose.PSD for .NET 允许在不安装 Adobe Photoshop 或 Illustrator 的情况下创建和修改 PSD 文件。在需要使用 C# 或 VB.NET 动态更新 PSD 层的情况下,该 API 非常方便。您可以使用 NuGet 包管理器 安装 API,或手动下载并引用其 DLL。
使用 C# 查找和更新 PSD 文件中的文本层
Aspose.PSD for .NET 允许您使用图层名称在 PSD 文件中找到所需的图层。找到图层后,您可以更新其内容。以下是在 PSD 文件中查找和更新文本图层的步骤。
- 创建 PsdImage 类的实例并使用 PSD 文件的路径对其进行初始化。
- 使用 PsdImage.Layers 属性访问 PSD 中的图层。
- 匹配每个图层的显示名称以将所需图层放入 TextLayer 对象。
- 使用 TextLayer.UpdateText(String) 方法更新文本。
- 使用 PsdImage.Save(String) 方法保存更新的图像。
以下代码示例展示了如何使用 C# 在 PSD 文件中查找和更新文本层。
// 加载 PSD 文件
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
// 使用图层名称查找图层
var layerToUpdateText = (TextLayer)FindLayer("Name", image);
// 更新文本的简单方法
layerToUpdateText.UpdateText("John Doe");
// 保存更新的 PSD 文件
image.Save("updated-psd.psd");
}
//--------------------FindLayer()------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// 获取 PSD 文件中的 aa 图层
var layers = image.Layers;
// 找到想要的图层
foreach (var layer in layers)
{
// 匹配图层名称
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
下面是我们在此示例中使用的输入 PSD 文件的屏幕截图:
以下是具有更新文本层的结果 PSD 文件:
使用 C# 查找和更新 PSD 文件中的图像层
为了处理图像等图形对象,Aspose.PSD for .NET 公开了 Graphics 类。此类用于清除或绘制 PSD 图层中的图形。以下是查找 PSD 图层并更新其图像的步骤。
- 创建 PsdImage 类的对象以加载 PSD 文件。
- 从 PsdImage.Layers 对象中找到 PSD 文件中的图层。
- 在 Stream 对象中加载要在图层中绘制的图像。
- 创建一个新的 Layer 对象,并使用上一步中创建的 Stream 对象对其进行初始化。
- 创建 Graphics 类的一个实例,并用要替换的层对其进行初始化。
- 使用 Graphics.Clear() 方法清除图层。
- 使用 Graphics.DrawImage(Image, Rectangle) 方法在图层中绘制图像。
- 使用 PsdImage.Save(String) 方法保存文件。
以下代码示例展示了如何使用 C# 在 PSD 文件中查找和更新图像层。
// 加载 PSD 文件
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
// 让我们找到我们想要替换的层
var layerToReplace = FindLayer("ProfilePicture", image);
using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
{
var newLayer = new Layer(stream);
// 在旧图层上绘制新图层
var graphic = new Graphics(layerToReplace);
graphic.Clear(Color.Empty);
graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
}
// 保存更新的 PSD 文件
image.Save("updated-psd2.psd");
}
//--------------------FindLayer()------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// 获取 PSD 文件中的 aa 图层
var layers = image.Layers;
// 找到想要的图层
foreach (var layer in layers)
{
// 匹配图层名称
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
以下是使用上述代码更新图像层后的PSD文件截图:
结论
在本文中,我们了解了如何使用 C# 在 Photoshop 文件 (PSD) 中查找和更新图层。分步指南和代码示例演示了如何在 Photoshop PSD 文件中查找图层并更新其文本或图像。您可以使用 documentation 探索更多关于 Aspose.PSD for .NET 的信息。