Inteligentne filtry Inteligentne obiekty PSD csharp

Inteligentne filtry umożliwiają nieniszczącą edycję obrazu. Można je ponownie edytować, ponieważ zachowują ustawienia filtra i w razie potrzeby można je dostosować lub usunąć z obrazu. Co więcej, możesz dodać jeden lub więcej inteligentnych filtrów, pod warunkiem, że warstwa jest obiektem inteligentnym. W tym artykule opisano, jak edytować i aktualizować inteligentne filtry, a także dodawać nowe filtry, takie jak GaussianBlurSmartFilter, AddNoiseSmartFilter itp. do obrazu programowo w języku C#.

Praca z inteligentnymi filtrami i inteligentnymi obiektami w pliku PSD – instalacja C# API

Musisz zainstalować Aspose.PSD for .NET API, aby programowo pracować z obrazami PSD w C# .NET. Szybko pobierz jego plik DLL z sekcji Downloads lub użyj polecenia instalacyjnego NuGet w Visual Studio IDE:

PM> Install-Package Aspose.PSD

Dodawaj, edytuj i aktualizuj inteligentne filtry i inteligentne obiekty w języku C#

Możesz edytować, aktualizować lub dodawać nowe inteligentne filtry do inteligentnych obiektów w pliku PSD, wykonując poniższe czynności:

  • Załaduj wejściowy obraz PSD, używając klasy Image.
  • Załaduj warstwę obiektów inteligentnych z pliku wejściowego.
  • Edytuj inteligentny filtr i sprawdź jego właściwości, takie jak promień, tryb mieszania, krycie itp.
  • Zaktualizuj właściwości filtrów i dodaj nowe inteligentne filtry, takie jak rozmycie gaussowskie, dodawanie szumu itp.
  • Zapisz plik wyjściowy ze zaktualizowanymi filtrami i sprawdź zaktualizowane właściwości.

Poniższy fragment kodu pokazuje, jak programowo edytować, aktualizować lub dodawać inteligentne filtry do inteligentnych obiektów w obrazie PSD w języku C#:

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

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

                // edytuj inteligentne filtry
                GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

                // sprawdź wartości filtrów
                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

                // zaktualizuj wartości filtrów
                gaussianBlur.Radius = 1;
                gaussianBlur.BlendMode = BlendMode.Divide;
                gaussianBlur.Opacity = 75;
                gaussianBlur.IsEnabled = false;
                AddNoiseSmartFilter addNoise = (AddNoiseSmartFilter)smartObj.SmartFilters.Filters[1];
                addNoise.Distribution = NoiseDistribution.Uniform;

                // dodaj nowe elementy filtra
                var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
                filters.Add(new GaussianBlurSmartFilter());
                filters.Add(new AddNoiseSmartFilter());
                smartObj.SmartFilters.Filters = filters.ToArray();

                // zatwierdź zmiany
                smartObj.SmartFilters.UpdateResourceValues();

                // Zastosuj filtry
                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];

                // sprawdź wartości filtrów
                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
            }

Poniższy zrzut ekranu pokazuje przykładowe wyjście wygenerowane na konsoli po wykonaniu powyższego fragmentu kodu:

Ponadto możesz pobrać pliki wejściowe i wyjściowe z tego łącza w celach informacyjnych.

Poznaj funkcje API

Istnieje wiele innych klas i właściwości do pracy z plikami PSD i innymi obrazami. Możesz odwiedzić sekcję dokumentacja, aby uzyskać więcej informacji.

Uzyskaj bezpłatną licencję ewaluacyjną

Możesz ocenić interfejs API bez żadnych ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się programowo pracować z filtrami inteligentnymi na obiektach inteligentnych w obrazie PSD w języku C#. Omówiono w nim, jak edytować i aktualizować istniejące inteligentne filtry w obrazie, a także dodawać nowe inteligentne filtry, takie jak GaussianBlurSmartFilter, AddNoiseSmartFilter itp. do obrazu. Co więcej, warto zauważyć, że do pracy z tą funkcją nie trzeba instalować żadnego programu Photoshop ani żadnej innej aplikacji do przetwarzania obrazu, ponieważ interfejs API nie jest zależny od żadnego innego narzędzia. Jeśli masz jakiekolwiek pytania lub wątpliwości, napisz do nas na forum.

Zobacz też

Dodaj podpis do obrazu programowo w języku C#