彩票走势图

如何使用Aspose.PSD在C#中查找图层并在Photoshop文件中更新图层的文本或图像

翻译|使用教程|编辑:李显亮|2020-06-09 10:57:57.110|阅读 1572 次

概述:为了使这一过程自动化,在本文中,将学习如何使用C#.NET在Photoshop的PSD文件中动态查找图层和更新图层的文本或图像。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

PSD是Adobe Photoshop用于将其文档保存为多层结构的默认格式,其中每一层都包含文本,图像,图形对象和其他受支持的元素。在某些情况下,当您拥有PSD模板时,需要通过填充模板中的文本和图像层来创建多个结果图像。

这种情况的一个示例是在组织内创建员工卡。为了使这一过程自动化,在本文中,将学习如何使用C#.NET在Photoshop的PSD文件中动态查找图层和更新图层的文本或图像。将展示如何:

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

Aspose.PSD for .NET已升级至V20.5,如果你还没有用过Aspose.PSD可以点击这里下载最新版测试。


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

用于.NET的Aspose.PSD允许您使用图层的名称在PSD文件中找到所需的图层。找到图层后,即可更新其内容。以下是在PSD文件中查找和更新文本层的步骤。

  • 创建PsdImage类的实例,并使用PSD文件的路径对其进行初始化。
  • 使用PsdImage.Layers属性访问PSD中的图层。
  • 匹配每个图层的显示名称,以将所需的图层添加到TextLayer对象中。
  • 使用TextLayer.UpdateText(String)方法更新文本。
  • 使用PsdImage.Save(String)方法保存更新的图像。

下面的代码示例演示如何使用C#查找和更新PSD文件中的文本层。

// Load PSD file
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Find Layer using layer's name
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Simple way to update text
	layerToUpdateText.UpdateText("John Doe");
	// Save the updated PSD file
	image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Get aa layers in PSD file
	var layers = image.Layers;
	// Find desired layer
	foreach (var layer in layers)
	{
		// Match layer's name
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

下面是在此示例中使用的输入PSD文件的屏幕截图:

PSD文件处理控件Aspose.PSD转换功能演示:在C#中将PSD转换为PDF、PNG等其他图像格式

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

PSD文件处理控件Aspose.PSD转换功能演示:在C#中将PSD转换为PDF、PNG等其他图像格式

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

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

  • 创建PsdImage类的对象以加载PSD文件。
  • 从PsdImage.Layers对象中找到PSD文件中的图层。
  • 将要绘制的图像加载到Stream对象的图层中。
  • 创建一个新的Layer对象,并使用上一步中创建的Stream对象对其进行初始化。
  • 创建Graphics类的实例,并使用要替换的图层对其进行初始化。
  • 使用Graphics.Clear()方法清除图层。
  • 使用Graphics.DrawImage(Image,Rectangle)方法在图层中绘制图像。
  • 使用PsdImage.Save(String)方法保存文件。

下面的代码示例演示如何使用C#查找和更新PSD文件中的图像层。

// Load PSD file
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Let's find layer that we want to replace
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Drawing of new layer on the old
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Save the updated PSD file
	image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Get aa layers in PSD file
	var layers = image.Layers;
	// Find desired layer
	foreach (var layer in layers)
	{
		// Match layer's name
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

以下是使用上述代码更新图像层后的PSD文件的屏幕截图:

PSD文件处理控件Aspose.PSD转换功能演示:在C#中将PSD转换为PDF、PNG等其他图像格式


还想要更多吗?您可以点击阅读
【2019 · Aspose最新资源整合】查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP