在本文中,您将学习如何使用 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 文件中查找和更新文本图层的步骤。

以下代码示例展示了如何使用 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 文件的屏幕截图:

使用 C# 在 PSD 中查找图层

以下是具有更新文本层的结果 PSD 文件:

使用 C# 更新 PSD 中的文本层

使用 C# 查找和更新 PSD 文件中的图像层

为了处理图像等图形对象,Aspose.PSD for .NET 公开了 Graphics 类。此类用于清除或绘制 PSD 图层中的图形。以下是查找 PSD 图层并更新其图像的步骤。

以下代码示例展示了如何使用 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# 更新 PSD 中的图像层

结论

在本文中,我们了解了如何使用 C# 在 Photoshop 文件 (PSD) 中查找和更新图层。分步指南和代码示例演示了如何在 Photoshop PSD 文件中查找图层并更新其文本或图像。您可以使用 documentation 探索更多关于 Aspose.PSD for .NET 的信息。

也可以看看