Фотографии — очень полезный способ отражения информации. Файлы формата PSD используются для создания изображений. Однако могут быть сценарии, такие как редактирование нескольких файлов Photoshop по одним и тем же строкам. Например, приложению для обработки фотографий может потребоваться добавить слой в несколько документов Photoshop наряду с другими операциями. Aspose.PSD for .NET API предлагает множество функций для работы с PSD, PSB, AI и многими другими форматами файлов. Давайте рассмотрим следующие варианты использования, связанные с добавлением слоя в файлы PSD:
- Добавить слой заливки во время выполнения в файл PSD с помощью C#
- Добавить существующий слой заливки в файл PSD с помощью C#
Добавить слой заливки во время выполнения в документ Photoshop с помощью C#
Aspose.PSD for .NET API поддерживает создание слоя заливки в файле PSD. Вам не обязательно загружать слой из существующего файла. Просто выполните следующие шаги, чтобы добавить слой заливки во время выполнения в файле PSD:
- Инициализировать экземпляр класса PsdImage с размерами страницы
- Создайте экземпляр класса FillLayer.
- Установите отображаемое имя для слоя
- Добавьте слой к изображению
Следующий фрагмент кода показывает, как добавить слой-заливку в 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:
- Загрузить исходный PSD-файл
- Переберите все слои и проверьте наличие FillLayer.
- Установите различные настройки для слоя
- Отредактируйте слой-заливку
- Сохранить изображение
Фрагмент кода ниже показывает, как добавить слой заливки с заливкой узором с помощью 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. Выполните следующие действия, чтобы добавить или создать слой-заливку с цветовой заливкой:
- Загрузить исходное PSD-изображение
- Проверьте все слои и найдите FillLayer
- Чтение настроек заливки слоя
- Установите цвет заливки и обновите слой
- Сохраните 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. Пожалуйста, не стесняйтесь обращаться к нам через бесплатные форумы поддержки в случае каких-либо проблем.