Filtres intelligents Objets intelligents PSD csharp

Les filtres intelligents sont utilisés pour permettre l’édition non destructive d’une image. Ils sont rééditables car ils conservent les paramètres de filtre et peuvent être ajustés ou supprimés de l’image si nécessaire. De plus, vous pouvez ajouter un ou plusieurs filtres intelligents à condition qu’un calque soit un objet intelligent. Cet article explique comment modifier et mettre à jour des filtres intelligents, ainsi qu’ajouter de nouveaux filtres tels que GaussianBlurSmartFilter, AddNoiseSmartFilter, etc. à une image par programme en C#.

Travailler avec des filtres intelligents et des objets intelligents dans le fichier PSD - Installation de l’API C#

Vous devez installer l’API Aspose.PSD for .NET pour utiliser des images PSD par programmation dans C# .NET. Téléchargez rapidement son fichier DLL à partir de la section Téléchargements ou utilisez la commande d’installation NuGet dans l’IDE Visual Studio :

PM> Install-Package Aspose.PSD

Ajouter, modifier et mettre à jour des filtres intelligents et des objets intelligents en C#

Vous pouvez modifier, mettre à jour ou ajouter de nouveaux filtres intelligents aux objets intelligents dans un fichier PSD en suivant les étapes ci-dessous :

  • Chargez l’image PSD d’entrée à l’aide de la classe Image.
  • Chargez le calque d’objet intelligent à partir du fichier d’entrée.
  • Modifiez le filtre intelligent et vérifiez ses propriétés telles que le rayon, le mode de fusion, l’opacité, etc.
  • Mettez à jour les propriétés du filtre et ajoutez de nouveaux filtres intelligents comme le flou gaussien, l’ajout de bruit, etc.
  • Enregistrez le fichier de sortie avec les filtres mis à jour et vérifiez les propriétés mises à jour.

L’extrait de code ci-dessous montre comment modifier, mettre à jour ou ajouter des filtres intelligents sur des objets intelligents dans une image PSD par programmation en C# :

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

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

                // modifier les filtres intelligents
                GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

                // vérifier les valeurs de filtre
                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

                // mettre à jour les valeurs de filtre
                gaussianBlur.Radius = 1;
                gaussianBlur.BlendMode = BlendMode.Divide;
                gaussianBlur.Opacity = 75;
                gaussianBlur.IsEnabled = false;
                AddNoiseSmartFilter addNoise = (AddNoiseSmartFilter)smartObj.SmartFilters.Filters[1];
                addNoise.Distribution = NoiseDistribution.Uniform;

                // ajouter de nouveaux éléments de filtre
                var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
                filters.Add(new GaussianBlurSmartFilter());
                filters.Add(new AddNoiseSmartFilter());
                smartObj.SmartFilters.Filters = filters.ToArray();

                // appliquer les modifications
                smartObj.SmartFilters.UpdateResourceValues();

                // Appliquer des filtres
                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];

                // vérifier les valeurs de filtre
                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
            }

La capture d’écran ci-dessous montre l’exemple de sortie produit sur la console après l’exécution de l’extrait de code ci-dessus :

De plus, vous pouvez télécharger les fichiers d’entrée et de sortie depuis ce lien pour référence.

Explorer les fonctionnalités de l’API

Il existe de nombreuses autres classes et propriétés pour travailler avec le PSD et d’autres images. Vous pouvez visiter la section documentation pour plus d’informations.

Obtenez une licence d’évaluation gratuite

Vous pouvez évaluer l’API sans aucune limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à utiliser des filtres intelligents sur des objets intelligents dans une image PSD par programmation en C#. Il explique comment modifier et mettre à jour les filtres intelligents existants dans une image, ainsi que l’ajout de nouveaux filtres intelligents tels que GaussianBlurSmartFilter, AddNoiseSmartFilter, etc. à une image. De plus, il convient de noter ici que vous n’avez pas besoin d’installer Photoshop ou toute autre application de traitement d’image pour travailler avec cette fonctionnalité car l’API ne dépend d’aucun autre outil. Si vous avez des questions ou des préoccupations, veuillez nous écrire sur le forum.

Voir également

Ajouter une signature à une image par programme en C#