Adobe 流行的 Photoshop 應用程序使用 PSD(Photoshop 文檔)作為原生圖像文件格式。它通常用於創建徽標、小冊子和其他 PSD 文件包含多個圖層的圖像。我們可以通過編程方式將文本或圖像水印添加到 PSD 文件來輕鬆保護設計。在本文中,我們將學習如何使用 C# 向 PSD 添加水印。
本文應涵蓋以下主題:
用於向 PSD 添加水印的 C# Photoshop API
要在 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 保存到指定的文件位置。
請 下載 API 的 DLL 或使用 NuGet 安裝它。
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 添加水印外,您還可以使用 文檔 了解有關 Aspose.PSD for .NET 的更多信息,並探索 API 支持的不同功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。