Смарт-фильтры Смарт-объекты PSD csharp

Смарт-фильтры используются для неразрушающего редактирования изображения. Их можно редактировать повторно, поскольку они сохраняют настройки фильтра и при необходимости могут быть изменены или удалены с изображения. Кроме того, вы можете добавить один или несколько смарт-фильтров, если слой является смарт-объектом. В этой статье рассказывается, как редактировать и обновлять интеллектуальные фильтры, а также добавлять новые фильтры, такие как GaussianBlurSmartFilter, AddNoiseSmartFilter и т. д., к изображению программным способом на C#.

Работа со смарт-фильтрами и смарт-объектами в PSD-файле — установка C# API

Вам необходимо установить Aspose.PSD for .NET API для программной работы с изображениями PSD в C# .NET. Быстро загрузите его DLL-файл из раздела «Загрузки» или используйте команду установки NuGet в интегрированной среде разработки Visual Studio:

PM> Install-Package Aspose.PSD

Добавление, редактирование и обновление смарт-фильтров и смарт-объектов в C#

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

  • Загрузите исходное PSD-изображение с помощью класса Image.
  • Загрузите слой смарт-объекта из входного файла.
  • Отредактируйте смарт-фильтр и проверьте его свойства, такие как радиус, режим наложения, непрозрачность и т. д.
  • Обновите свойства фильтра и добавьте новые интеллектуальные фильтры, такие как размытие по Гауссу, добавление шума и т. д.
  • Сохраните выходной файл с обновленными фильтрами и проверьте обновленные свойства.

В приведенном ниже фрагменте кода показано, как программно редактировать, обновлять или добавлять смарт-фильтры к смарт-объектам в изображении PSD на C#:

            var sourceFilter = "r2_SmartFilters.psd";
            var outputPsd = "output.psd";

            using (var image = (PsdImage)Image.Load(sourceFilter))
            {
                SmartObjectLayer smartObj = (SmartObjectLayer)image.Layers[1];

                // редактировать умные фильтры
                GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

                // проверить значения фильтра
                Console.WriteLine("Radius: " + gaussianBlur.Radius); // 3.1
                Console.WriteLine("Blend Mode: " + gaussianBlur.BlendMode); // BlendMode.Dissolve
                Console.WriteLine("Opacity: " + gaussianBlur.Opacity); // 90d
                Console.WriteLine("GuassianBlurEnabled: " + gaussianBlur.IsEnabled); // true

                // обновить значения фильтра
                gaussianBlur.Radius = 1;
                gaussianBlur.BlendMode = BlendMode.Divide;
                gaussianBlur.Opacity = 75;
                gaussianBlur.IsEnabled = false;
                AddNoiseSmartFilter addNoise = (AddNoiseSmartFilter)smartObj.SmartFilters.Filters[1];
                addNoise.Distribution = NoiseDistribution.Uniform;

                // добавить новые элементы фильтра
                var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
                filters.Add(new GaussianBlurSmartFilter());
                filters.Add(new AddNoiseSmartFilter());
                smartObj.SmartFilters.Filters = filters.ToArray();

                // применять изменения
                smartObj.SmartFilters.UpdateResourceValues();

                // Применить фильтры
                smartObj.SmartFilters.Filters[0].Apply(image.Layers[2]);
                smartObj.SmartFilters.Filters[4].ApplyToMask(image.Layers[2]);

                image.Save(outputPsd);
            }

            using (var image = (PsdImage)Image.Load(outputPsd))
            {
                SmartObjectLayer smartObj = (SmartObjectLayer)image.Layers[1];

                GaussianBlurSmartFilter gaussianBlur = (Aspose.PSD.FileFormats.Psd.Layers.SmartFilters.GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

                // проверить значения фильтра
                Console.WriteLine("\n\n");
                Console.WriteLine("Radius: " + gaussianBlur.Radius); // 1d
                Console.WriteLine("Blend Mode: " + gaussianBlur.BlendMode); // BlendMode.Divide
                Console.WriteLine("Opacity: " + gaussianBlur.Opacity); // 75d
                Console.WriteLine("GuassianBlurEnabled: " + gaussianBlur.IsEnabled); // false

                Console.WriteLine(smartObj.SmartFilters.Filters[5] is GaussianBlurSmartFilter); // true
                Console.WriteLine(smartObj.SmartFilters.Filters[6] is AddNoiseSmartFilter); // true
            }

На приведенном ниже снимке экрана показан пример вывода, созданного на консоли после выполнения приведенного выше фрагмента кода:

Кроме того, вы можете скачать входной и выходной файлы по этой ссылке для справки.

Изучите функции API

Есть много других классов и свойств для работы с PSD и другими изображениями. Вы можете посетить раздел документация для получения дополнительной информации.

Получите бесплатную пробную лицензию

Вы можете оценить API без каких-либо ограничений, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как программно работать со смарт-фильтрами на смарт-объектах в изображении PSD на C#. В нем обсуждается, как редактировать и обновлять существующие интеллектуальные фильтры в изображении, а также добавлять к изображению новые интеллектуальные фильтры, такие как GaussianBlurSmartFilter, AddNoiseSmartFilter и т. д. Кроме того, здесь следует отметить, что вам не нужно устанавливать какой-либо Photoshop или любое другое приложение для обработки изображений для работы с этой функцией, поскольку API не зависит от какого-либо другого инструмента. Если у вас есть какие-либо вопросы или проблемы, напишите нам на форум.

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

[Добавить подпись к изображению программно на C#] (https://blog.aspose.com/ru/2022/03/18/sign-image-csharp/)