在photoshop中添加填充圖層

照片是反映信息的一種非常有用的方式。 PSD 格式文件用於創建圖像。但是,可能存在類似沿相同行編輯多個 Photoshop 文件的情況。例如,照片處理應用程序可能需要在多個 Photoshop 文檔中添加一個圖層,以及其他操作。 Aspose.PSD for .NET API 提供了許多功能來處理 PSD、PSB、AI 和許多其他文件格式。讓我們探索以下與在 PSD 文件中添加圖層相關的用例:

使用 C# 在運行時在 Photoshop 文檔中添加填充圖層

Aspose.PSD for .NET API 支持在 PSD 文件中創建填充層。您不一定需要從現有文件加載圖層。只需按照以下步驟在運行時在 PSD 文件中添加填充層:

  1. 使用頁面尺寸初始化 PsdImage 類的實例
  2. 創建 FillLayer 類的實例
  3. 為圖層設置顯示名稱
  4. 將圖層添加到圖像

以下代碼片段顯示瞭如何使用 C# 在 Photoshop 中添加填充圖層:

string outputFilePath = Path.Combine(dataDir, "output.psd");

using (var image = new PsdImage(100, 100))
{
    FillLayer colorFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Color);
    colorFillLayer.DisplayName = "Color Fill Layer";
    image.AddLayer(colorFillLayer);

    FillLayer gradientFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Gradient);
    gradientFillLayer.DisplayName = "Gradient Fill Layer";
    image.AddLayer(gradientFillLayer);

    FillLayer patternFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Pattern);
    patternFillLayer.DisplayName = "Pattern Fill Layer";
    patternFillLayer.Opacity = 50;
    image.AddLayer(patternFillLayer);

    image.Save(outputFilePath);
}

此代碼片段將生成指定尺寸的 PSD 文件,其中下面的屏幕截圖顯示了三個填充層的名稱,與上面的 C# 代碼完全相同:

在 Photoshop 中添加圖層

使用 C# 在 PSD 文件中添加現有填充圖層

我們已經學習瞭如何創建和添加新的填充層。讓我們看看如何從現有的 Photoshop 文件添加圖層。以下是添加現有填充層的可能性:

i) 使用 C# 添加帶有圖案填充的填充層

圖案填充可能有圖像、線條或陰影來填充該區域。您需要按照以下步驟在 PSD 圖像中添加帶有圖案填充的圖層:

  1. 加載源 PSD 文件
  2. 遍歷所有圖層並檢查 FillLayer
  3. 為圖層設置不同的設置
  4. 編輯填充層
  5. 保存圖像

下面的代碼片段顯示瞭如何使用 C# 添加帶有圖案填充的填充層:

// 添加填充層的支持:圖案
string sourceFileName = dataDir + "PatternFillLayer.psd";
string exportPath = dataDir + "PatternFillLayer_Edited.psd";
double tolerance = 0.0001;
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
    foreach (var layer in im.Layers)
    {
        if (layer is FillLayer)
        {
            FillLayer fillLayer = (FillLayer)layer;
            PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings;
            if (fillSettings.HorizontalOffset != -46 ||
                fillSettings.VerticalOffset != -45 ||
                fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" ||
                fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
                fillSettings.AlignWithLayer != true ||
                fillSettings.Linked != true ||
                fillSettings.PatternHeight != 64 ||
                fillSettings.PatternWidth != 64 ||
                fillSettings.PatternData.Length != 4096 ||
                Math.Abs(fillSettings.Scale - 50) > tolerance)
            {
                throw new Exception("PSD Image was read wrong");
            }
            // 編輯 
            fillSettings.Scale = 300;
            fillSettings.HorizontalOffset = 2;
            fillSettings.VerticalOffset = -20;
            fillSettings.PatternData = new int[]
            {
           Color.Red.ToArgb(), Color.Blue.ToArgb(),  Color.Blue.ToArgb(),
           Color.Blue.ToArgb(), Color.Red.ToArgb(),  Color.Blue.ToArgb(),
           Color.Blue.ToArgb(), Color.Blue.ToArgb(),  Color.Red.ToArgb()
            };
            fillSettings.PatternHeight = 3;
            fillSettings.PatternWidth = 3;
            fillSettings.AlignWithLayer = false;
            fillSettings.Linked = false;
            fillSettings.PatternId = Guid.NewGuid().ToString();
            fillLayer.Update();
            break;
        }
    }
    im.Save(exportPath);
}

ii) 使用 C# 添加漸變填充層

您還可以使用漸變填充來填充 Photoshop 文檔中的圖層。 Aspose.PSD for .NET API 支持以下類型的漸變填充:

  • 線性的
  • 鑽石
  • 徑向
  • 反映
  • 角度

以下是添加具有漸變填充的圖層的步驟:

下面的代碼片段基於這些步驟,展示瞭如何使用 C# 在 Photoshop 文檔中添加漸變填充層:

string fileName = dataDir + "FillLayerGradient.psd";
GradientType[] gradientTypes = new[]
{
    GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond
};
using (var image = Image.Load(fileName))
{
    PsdImage psdImage = (PsdImage)image;
    FillLayer fillLayer = (FillLayer)psdImage.Layers[0];
    GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings;
    foreach (var gradientType in gradientTypes)
    {
        fillSettings.GradientType = gradientType;
        fillLayer.Update();
        psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

此代碼片段將生成五個不同的文件,每個文件在 PSD 文件的圖層中具有不同種類的漸變填充。

iii) 使用 C# 添加帶有顏色填充的填充層

您可以在 Photoshop 文檔(PSD 文件)中添加帶有顏色填充的圖層。按照以下步驟添加或創建帶有顏色填充的填充圖層:

  1. 加載源 PSD 圖像
  2. 檢查所有圖層並找到 FillLayer
  3. 讀取圖層的填充設置
  4. 設置填充顏色並更新圖層
  5. 保存 PSD 圖像

下面的代碼片段基於上述步驟,展示瞭如何使用 C# 在 Photoshop 文檔中添加填充圖層:

// 如需完整示例和數據文件,請訪問 https://github.com/aspose-psd/Aspose.PSD-for-.NET

string sourceFileName = dataDir + "ColorFillLayer.psd";
string exportPath = dataDir + "ColorFillLayer_output.psd";

var im = (PsdImage)Image.Load(sourceFileName);

using (im)
{
    foreach (var layer in im.Layers)
    {
        if (layer is FillLayer)
        {
            var fillLayer = (FillLayer)layer;

            if (fillLayer.FillSettings.FillType != FillType.Color)
            {
                throw new Exception("Wrong Fill Layer");
            }

            var settings = (IColorFillSettings)fillLayer.FillSettings;

            settings.Color = Color.Red;
            fillLayer.Update();
            im.Save(exportPath);
            break;
        }
    }
}

結論

在本文中,您探索了在 PSD 文件中添加填充層的多種可能性中的幾種。您已了解如何從頭開始添加圖層,以及如何從現有 PSD 文件添加圖層。還介紹了不同類型的漸變填充層以及示例。 Aspose.PSD for .NET API 提供了許多其他令人興奮的功能。如有任何疑慮,請隨時通過 免費支持論壇 與我們聯繫。

也可以看看