Добавляем слой-заливку в фотошопе

Фотографии — очень полезный способ отражения информации. Файлы формата PSD используются для создания изображений. Однако могут быть сценарии, такие как редактирование нескольких файлов Photoshop по одним и тем же строкам. Например, приложению для обработки фотографий может потребоваться добавить слой в несколько документов Photoshop наряду с другими операциями. Aspose.PSD for .NET API предлагает множество функций для работы с PSD, PSB, AI и многими другими форматами файлов. Давайте рассмотрим следующие варианты использования, связанные с добавлением слоя в файлы PSD:

Добавить слой заливки во время выполнения в документ Photoshop с помощью C#

Aspose.PSD for .NET API поддерживает создание слоя заливки в файле PSD. Вам не обязательно загружать слой из существующего файла. Просто выполните следующие шаги, чтобы добавить слой заливки во время выполнения в файле PSD:

  1. Инициализировать экземпляр класса PsdImage с размерами страницы
  2. Создайте экземпляр класса FillLayer.
  3. Установите отображаемое имя для слоя
  4. Добавьте слой к изображению

Следующий фрагмент кода показывает, как добавить слой-заливку в Photoshop с помощью 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);
}

Этот фрагмент кода создаст файл PSD с указанными размерами, где на приведенном ниже снимке экрана показаны имена трех слоев заливки точно так, как указано в коде C# выше:

добавить слой в фотошопе

Добавить существующий слой заливки в файл PSD с помощью C#

Мы уже узнали о создании и добавлении новых слоев заливки. Давайте посмотрим, как добавить слой из существующего файла 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 поддерживает следующие типы градиентных заливок:

  • Линейный
  • Алмаз
  • Радиальный
  • Отраженный
  • Угол

Ниже приведены шаги для добавления слоя с градиентной заливкой:

  • Загрузить исходный PSD-файл
  • Инициализировать коллекцию GradientType
  • Объявить экземпляр класса GradientFillSettings
  • Укажите GradientType и обновите слой
  • Сохранить PSD-изображение

Приведенный ниже фрагмент кода основан на этих шагах и показывает, как добавить слой GradientFill в документ Photoshop с помощью 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 });
    }
}

Этот фрагмент кода создаст пять разных файлов, каждый из которых будет иметь свой тип градиентной заливки в слое PSD-файла.

iii) Добавьте слой заливки с заливкой цветом, используя C#

Вы можете добавить слой с цветовой заливкой в документ Photoshop, файл PSD. Выполните следующие действия, чтобы добавить или создать слой-заливку с цветовой заливкой:

  1. Загрузить исходное PSD-изображение
  2. Проверьте все слои и найдите FillLayer
  3. Чтение настроек заливки слоя
  4. Установите цвет заливки и обновите слой
  5. Сохраните PSD-изображение

Приведенный ниже фрагмент кода основан на вышеупомянутых шагах, которые показывают, как добавить слой заливки в документ Photoshop с помощью C#:

// Полные примеры и файлы данных см. на странице 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. Вместе с примерами также рассматриваются различные типы слоев градиентной заливки. Есть много других интересных функций, предлагаемых API Aspose.PSD для .NET. Пожалуйста, не стесняйтесь обращаться к нам через бесплатные форумы поддержки в случае каких-либо проблем.

Смотрите также