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

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

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 fileusing (PsdImage image = (PsdImage)Image.Load(@"template.psd")){// Find Layer using layer's namevar layerToUpdateText = (TextLayer)FindLayer("Name", image);// Simple way to update textlayerToUpdateText.UpdateText("John Doe");// Save the updated PSD fileimage.Save("updated-psd.psd");}//-------------------FindLayer()-------------public static Layer FindLayer(string layerName, PsdImage image){// Get aa layers in PSD filevar layers = image.Layers;// Find desired layerforeach (var layer in layers){// Match layer's nameif (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 fileusing (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd")){// Let's find layer that we want to replacevar layerToReplace = FindLayer("ProfilePicture", image);using (Stream stream = new FileStream(@"avatar.png", FileMode.Open)){var newLayer = new Layer(stream);// Drawing of new layer on the oldvar 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 fileimage.Save("updated-psd2.psd");}//-------------------FindLayer()-------------public static Layer FindLayer(string layerName, PsdImage image){// Get aa layers in PSD filevar layers = image.Layers;// Find desired layerforeach (var layer in layers){// Match layer's nameif (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase)){return layer;}}return null;}

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

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


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

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月6日
下一篇 2020年5月6日

相关推荐

发表回复

登录后才能评论