Adobe 流行的 Photoshop 应用程序使用 PSD(Photoshop 文档)作为原生图像文件格式。它通常用于创建 PSD 文件包含多个图层的徽标、小册子和其他图像。我们可以通过以编程方式将文本或图像水印添加到 PSD 文件来轻松保护设计。在本文中,我们将学习如何在 C# 中为 PSD 添加水印。
本文将涵盖以下主题:
C# Photoshop API 为 PSD 添加水印
要在 PSD 文件中添加文本或图像水印,我们将使用 Aspose.PSD for .NET API。它是一个易于使用的 Adobe Photoshop 文件格式操作 API。它允许在 .NET 应用程序中加载和读取 PSD 和 PSB 文件。该 API 使我们能够更新图层属性、添加水印、执行压缩、旋转、缩放或渲染 PSD 以及其他几种支持的文件格式,而无需安装 Adobe Photoshop。
API 的 PsdImage 类允许加载、编辑和保存 PSD 文件。 Graphics 类表示图像中的图形。我们有这个类的 DrawString(string, Font, Brush, RectangleF, StringFormat) 方法,用指定的画笔和字体对象在指定的矩形中绘制指定的文本字符串。 Layer 类表示 PSD 层。该类的DrawImage(Point, RasterImage)方法在图层上绘制图像。我们可以使用 Save(string, ImageOptionsBase) 方法将 PSD 保存到指定的文件位置。
PM> Install-Package Aspose.PSD
使用 C# 将文本水印添加到 PSD
我们可以按照以下步骤将任何文本作为水印添加到 PSD 文件中:
- 首先,使用 Image 类将 PSD 文件加载为 PsdImage。
- 接下来,创建 Graphics 类的实例。
- 然后,定义一个 Font 类对象来绘制水印宽度。
- 接下来,使用颜色创建 SolidBrush 类的实例。
- 然后,指定字符串对齐方式。
- 之后,调用 DrawString() 方法。
- 最后,使用 Save() 方法保存输出文件。
以下代码示例展示了如何在 C# 中将文本水印添加到 PSD 文件。
// 此代码示例显示如何将文本水印添加到 PSD 文件
// 将 PSD 文件加载为图像并将其转换为 PsdImage
PsdImage psdImage = (PsdImage)Image.Load(@"C:\Files\SimplePSD.psd");
// 创建图形对象以执行绘制操作。
Graphics graphics = new Graphics(psdImage);
// 创建用于绘制水印的字体。
Font font = new Font("Arial", 25.0f);
// 创建一个颜色 alpha 设置为接近 0 的实心画笔以使用水印效果。
SolidBrush brush = new SolidBrush(Color.FromArgb(80, 128, 128, 128));
// 指定字符串对齐以将水印放在图像中心。
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
// 在图像中心使用字体、半透明画笔和旋转矩阵绘制水印。
graphics.DrawString("Sample Watermark Text", font, brush, new RectangleF(0, 0, psdImage.Width, psdImage.Height), sf);
// 将图像导出为 PNG 文件格式。
psdImage.Save(@"C:\Files\AddWatermark_output.png", new PngOptions());
我们还可以使用以下代码示例将输出保存为 PSD 文件:
psdImage.Save(@"C:\Files\AddWatermark_output.psd", new PsdOptions());
使用 C# 在 PSD 中创建对角线水印
我们可以按照以下步骤在 PSD 文件中添加对角线文本水印:
- 首先,使用 Image 类将 PSD 文件加载为 PsdImage。
- 接下来,创建 Graphics 类的实例。
- 然后,定义一个 Font 类对象来绘制水印宽度。
- 同时,创建一个带有颜色的 SolidBrush 类的实例。
- 然后,指定变换矩阵来旋转水印。
- 稍后,指定字符串对齐方式。
- 之后,调用 DrawString() 方法。
- 最后,使用 Save() 方法保存输出文件。
以下代码示例展示了如何在 C# 中向 PSD 文件添加对角线文本水印。
// 此代码示例显示如何向 PSD 文件添加对角线文本水印
// 将 PSD 文件加载为图像并将其转换为 PsdImage
PsdImage psdImage = (PsdImage)Image.Load(@"C:\Files\SimplePSD.psd");
// 创建图形对象以执行绘制操作
Graphics graphics = new Graphics(psdImage);
// 创建用于绘制水印的字体
Font font = new Font("Arial", 25.0f);
// 创建一个颜色 alpha 设置为接近 0 的实心画笔以使用水印效果
SolidBrush brush = new SolidBrush(Color.FromArgb(80, 128, 128, 128));
// 指定变换矩阵来旋转水印
graphics.Transform = new Matrix();
graphics.Transform.RotateAt(45, new PointF(psdImage.Width / 2, psdImage.Height / 2));
// 指定字符串对齐以将水印放在图像中心
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
// 在图像中心使用字体、半透明画笔绘制水印
graphics.DrawString("Sample Watermark Text", font, brush, new RectangleF(0, psdImage.Height / 2, psdImage.Width, psdImage.Height / 2), sf);
// 将图像导出为 PNG 文件格式
psdImage.Save(@"C:\Files\AddDiagnolWatermark_output.png", new PngOptions());
使用 C# 将图像水印添加到 PSD
我们还可以按照以下步骤将图像作为水印添加到 PSD 文件中:
- 首先,使用 Image 类将 PSD 文件加载为 PsdImage。
- 接下来,创建 Layer 类的实例。
- 然后,设置图层的高度、宽度和不透明度。
- 接下来,调用 AddLayer() 方法将图层添加到 PSD。
- 之后,将水印图像加载到图层中。
- 然后,将图像水印添加到图层。
- 之后,调用 DrawImage() 方法。它将位置和水印图像层作为参数。
- 最后,使用 Save() 方法保存输出文件。
以下代码示例展示了如何在 C# 中将图像水印添加到 PSD 文件中。
// 此代码示例显示如何将图像水印添加到 PSD 文件
// 将 PSD 文件加载到 PsdImage 对象中
PsdImage psdImage = (PsdImage)Image.Load(@"C:\Files\SimplePSD.psd");
// 添加新的水印图层
var baseLayer = new Layer();
baseLayer.Top = 200;
baseLayer.Bottom = 600;
baseLayer.Right = 600;
baseLayer.Opacity = 50;
// 将图层添加到 PSD 文件
psdImage.AddLayer(baseLayer);
// 将水印图像加载到图层中
FileStream ImageWatermarkFile = new FileStream(@"C:\Files\aspose_logo.png", FileMode.Open);
Layer ImageWatermarkLayer = new Layer(ImageWatermarkFile);
// 将图像水印添加到基础层
baseLayer.DrawImage(new Point(0, 200), ImageWatermarkLayer);
// 保存最终带水印的 PSD 文件
psdImage.Save(@"C:\Files\ImageWatermarkedPSD.png", new PngOptions());
获得免费临时许可证
您可以获得免费的临时许可证 试用 Aspose.PSD for .NET,不受评估限制。
结论
在本文中,我们学习了如何:
- 向 PSD 图像添加新图层;
- 将水印文本或图像添加到 PSD;
- 使用 C# 将 PSD 保存为 PNG 或 PSD 图像。
除了在 C# 中为 PSD 添加水印外,您还可以使用 documentation 了解更多关于 Aspose.PSD for .NET 的信息,并探索 API 支持的不同功能。如有任何歧义,请随时在我们的 免费支持论坛 上与我们联系。