Dodaj warstwę wypełnienia w Photoshopie

Zdjęcia są bardzo użytecznym sposobem odzwierciedlenia informacji. Pliki w formacie PSD są używane do tworzenia obrazów. Mogą jednak wystąpić scenariusze, takie jak edytowanie kilku plików programu Photoshop w ten sam sposób. Na przykład aplikacja do przetwarzania zdjęć może wymagać dodania warstwy w wielu dokumentach programu Photoshop wraz z innymi operacjami. Aspose.PSD for .NET API oferuje wiele funkcji do pracy z PSD, PSB, AI i wieloma innymi formatami plików. Przyjrzyjmy się następującym przypadkom użycia związanym z dodawaniem warstwy w plikach PSD:

Dodaj warstwę wypełnienia w czasie wykonywania w dokumencie programu Photoshop za pomocą języka C#

Aspose.PSD for .NET API obsługuje tworzenie warstwy wypełnienia w pliku PSD. Nie musisz koniecznie ładować warstwy z istniejącego pliku. Wystarczy wykonać poniższe czynności, aby dodać warstwę wypełnienia w czasie wykonywania w pliku PSD:

  1. Zainicjuj instancję klasy PsdImage z wymiarami strony
  2. Utwórz instancję klasy FillLayer.
  3. Ustaw nazwę wyświetlaną dla warstwy
  4. Dodaj warstwę do obrazu

Poniższy fragment kodu pokazuje, jak dodać warstwę wypełnienia w programie Photoshop przy użyciu języka C#:

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);
}

Ten fragment kodu wygeneruje plik PSD o określonych wymiarach, gdzie poniższy zrzut ekranu pokazuje nazwy trzech warstw wypełnienia dokładnie tak, jak określono w powyższym kodzie C#:

Dodaj warstwę w Photoshopie

Dodaj istniejącą warstwę wypełnienia w pliku PSD za pomocą C#

Nauczyliśmy się już tworzenia i dodawania nowych warstw wypełnienia. Sprawdźmy, jak dodać warstwę z istniejącego pliku Photoshopa. Poniżej przedstawiono możliwości dodawania istniejących warstw wypełnienia:

i) Dodaj warstwę wypełnienia z wypełnieniem wzorkiem za pomocą C#

Wypełnienie deseniem może zawierać obraz, linię lub cień do wypełnienia obszaru. Aby dodać warstwę za pomocą Patten Fill w obrazie PSD, wykonaj poniższe czynności:

  1. Załaduj źródłowy plik PSD
  2. Przejrzyj wszystkie warstwy i sprawdź FillLayer
  3. Ustaw różne ustawienia dla warstwy
  4. Edytuj warstwę wypełnienia
  5. Zapisz obraz

Poniższy fragment kodu pokazuje, jak dodać warstwę wypełnienia za pomocą wzoru wypełnienia za pomocą języka C#:

// Dodaj obsługę Wypełnij warstwy: Wzór
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");
            }
            // Redagowanie 
            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) Dodaj warstwę wypełnienia z wypełnieniem gradientowym za pomocą C#

Możesz także użyć Wypełnienia gradientem do wypełnienia warstwy w dokumencie programu Photoshop. Aspose.PSD for .NET API obsługuje następujące typy wypełnień gradientowych:

  • Liniowy
  • Diament
  • Promieniowy
  • Odzwierciedlenie
  • Kąt

Poniżej przedstawiono kroki dodawania warstwy z wypełnieniem gradientowym:

Poniższy fragment kodu opiera się na tych krokach i pokazuje, jak dodać warstwę GradientFill w dokumencie programu Photoshop za pomocą języka C#:

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 });
    }
}

Ten fragment kodu wygeneruje pięć różnych plików, każdy z innym rodzajem wypełnienia gradientowego w warstwie pliku PSD.

iii) Dodaj warstwę wypełnienia z wypełnieniem kolorem za pomocą C#

Możesz dodać warstwę z wypełnieniem kolorem w dokumencie programu Photoshop, pliku PSD. Wykonaj poniższe czynności, aby dodać lub utworzyć warstwę wypełnienia z wypełnieniem kolorem:

  1. Załaduj źródłowy obraz PSD
  2. Sprawdź wszystkie warstwy i znajdź FillLayer
  3. Przeczytaj ustawienia wypełnienia warstwy
  4. Ustaw kolor wypełnienia i zaktualizuj warstwę
  5. Zapisz obraz PSD

Poniższy fragment kodu jest oparty na wyżej wymienionych krokach, które pokazują, jak dodać warstwę wypełnienia w dokumencie programu Photoshop za pomocą języka C#:

// Pełne przykłady i pliki danych można znaleźć na stronie 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;
        }
    }
}

Wniosek

W tym artykule zbadałeś kilka z wielu możliwości dodawania warstwy wypełnienia w plikach PSD. Nauczyłeś się, jak dodać warstwę od podstaw, a także jak dodać warstwę z istniejących plików PSD. Omówiono również różne typy warstw wypełnienia gradientowego wraz z przykładami. Istnieje wiele innych ekscytujących funkcji oferowanych przez Aspose.PSD for .NET API. W przypadku jakichkolwiek wątpliwości prosimy o kontakt z nami za pośrednictwem bezpłatnych forów pomocy technicznej.

Zobacz też