智能过滤器 智能对象 PSD csharp

智能滤镜用于启用图像的非破坏性编辑。它们是可重新编辑的,因为它们保留了过滤器设置,并且可以根据需要从图像中调整或删除。此外,您可以添加一个或多个智能过滤器,前提是图层是智能对象。本文介绍了如何在 C# 中以编程方式编辑和更新智能滤镜以及将新滤镜(如 GaussianBlurSmartFilter、AddNoiseSmartFilter 等)添加到图像中。

在 PSD 文件中使用智能过滤器和智能对象 - C# API 安装

您需要安装 Aspose.PSD for .NET API 以在 C# .NET 中以编程方式处理 PSD 图像。从下载部分快速下载其 DLL 文件或使用 Visual Studio IDE 中的 NuGet 安装命令:

PM> Install-Package Aspose.PSD

在 C# 中添加、编辑和更新智能过滤器和智能对象

您可以按照以下步骤对 PSD 文件中的智能对象进行编辑、更新或添加新的智能过滤器:

  • 使用 Image 类加载输入的 PSD 图像。
  • 从输入文件加载智能对象层。
  • 编辑智能滤镜并检查其属性,如半径、混合模式、不透明度等。
  • 更新滤镜属性并添加新的智能滤镜,如高斯模糊、添加噪点等。
  • 使用更新的过滤器保存输出文件并检查更新的属性。

下面的代码片段显示了如何在 C# 中以编程方式在 PSD 图像中的智能对象上编辑、更新或添加智能过滤器:

            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,而不受任何评估限制。

结论

在本文中,您学习了如何在 C# 中以编程方式在 PSD 图像中的智能对象上使用智能过滤器。它讨论了如何编辑和更新图像中现有的智能滤镜,以及向图像添加新的智能滤镜,如 GaussianBlurSmartFilter、AddNoiseSmartFilter 等。此外,值得注意的是,您无需安装任何 Photoshop 或任何其他图像处理应用程序即可使用此功能,因为 API 不依赖于任何其他工具。如果您有任何疑问或疑虑,请在 论坛 上给我们写信。

也可以看看

在 C# 中以编程方式向图像添加签名