Розумні фільтри Розумні об'єкти PSD csharp

Розумні фільтри використовуються для неруйнівного редагування зображення. Їх можна редагувати повторно, оскільки вони зберігають налаштування фільтра, і за потреби їх можна налаштувати або видалити із зображення. Крім того, ви можете додати один або кілька смарт-фільтрів, якщо шар є смарт-об’єктом. У цій статті розповідається про те, як редагувати та оновлювати розумні фільтри, а також додавати нові фільтри, такі як GaussianBlurSmartFilter, AddNoiseSmartFilter тощо, до зображення програмним шляхом у C#.

Робота зі смарт-фільтрами та смарт-об’єктами у файлі PSD – встановлення C# API

Вам потрібно встановити Aspose.PSD for .NET API, щоб програмно працювати із зображеннями PSD у C# .NET. Швидко завантажте його DLL-файл із розділу завантажень або скористайтеся командою інсталяції NuGet у Visual Studio IDE:

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#