Aspose.PSD smartFilter

Smart filters are not saved when updating text. But if you open the PSD and save the smart object yourself, then all filters start working again

@Hacls Could you please provide a code sample with the test file(s). We will check this and then will be created an issue.

Снимок.PNG (6.0 KB)
This is what the original text looks like.
Снимок2.PNG (12.2 KB)
This is what it looks like after saving
Сни2мок.PNG (885 Bytes)
The letter L becomes a curve after saving. Even though I don’t change it
If the text is not changed, but change the picture and save. The text will still be distorted

private void button3_Click(object sender, EventArgs e)
{
//путь к исхожнику фш
string sourceFilePath = @“F:\тестим c#\TestPSDWF\123.psd”;
//Имя для сохранения в псд
string outputFilePath = “1_output2.psd”;
//Имя для сохранения в пнг
string outputPngFilePath = Path.ChangeExtension(outputFilePath, “.jpg”);
//Хуй пойми что
PsdLoadOptions options = new PsdLoadOptions() { LoadEffectsResource = true };
//Открываем исходник
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{

            //Количество слоёв
            var length = image.Layers.Length;
            //Проходим по слоям
            for (int i = 0; i < length; i++)
            {
                var smart = image.Layers[i] as SmartObjectLayer;
                //Находим нужный смарт
                if (smart != null && smart.Name == "Text")
                {
                    //Захоидм в нешл
                    using (var stream = new MemoryStream(smart.Contents))
                    {
                        stream.Position = 0;
                        //Загружаем смарт
                        using (var imageInSmart = (PsdImage)Image.Load(stream))
                        {
                            //Ищем фотку в смарте
                            var layerToReplace = (Image)FindLayer("133", imageInSmart);
                            //Открываем новую фотку которую хотим вставить
                            using (Stream streamss = new FileStream(@"F:\тестим c#\TestPSDWF\MINISTRY OF INTERNAL AFFAIRS.png", FileMode.Open))
                            {
                                //Делаем новую фотку слоем
                                var newLayer = new Layer(streamss);
                                //Старую фотку вносим в графику для изменения
                                var graphic = new Graphics(layerToReplace);
                                //Удаляем старый рисунов
                                graphic.Clear(Color.Empty);
                                //Вставляем новые по размерам как старый
                                graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
                                //Сохраняем изменения в смарте
                                smart.ReplaceContents(imageInSmart);
                            }
                        }
                    }
                }
                if (smart != null && smart.Name == "Text")
                {
                    using (var stream = new MemoryStream(smart.Contents))
                    {
                        stream.Position = 0;
                        using (var imageInSmart = (PsdImage)Image.Load(stream))
                        {

                            var TextPhotoshop = (TextLayer)FindLayer("Name", imageInSmart);
                            TextPhotoshop.UpdateText("PECHAN");
                            TextPhotoshop = (TextLayer)FindLayer("LastName", imageInSmart);
                            TextPhotoshop.UpdateText("PECHAN");

                            smart.ReplaceContents(imageInSmart);
                        }
                    }
                    GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smart.SmartFilters.Filters[4];
                    // update filter values
                    gaussianBlur.Radius = 2;
                    gaussianBlur.Opacity = 2;
                    gaussianBlur.IsEnabled = true;

                    // add new filter items
                    var filters = new List<SmartFilter>(smart.SmartFilters.Filters);
                    filters.Add(new GaussianBlurSmartFilter());

                    // apply changes
                    smart.SmartFilters.UpdateResourceValues();
                    smart.SmartFilters.Filters[0].Apply(image.Layers[2]);
                }
            }

            var TextBezSmart = (TextLayer)FindLayer("Namess", image);
            TextBezSmart.UpdateText("PECHAN");

            var layerToReplaces = (Image)FindLayer("Photo (edit)", image);
            //Открываем новую фотку которую хотим вставить
            using (Stream streamss = new FileStream(@"F:\тестим c#\TestPSDWF\fewfewf.png", FileMode.Open))
            {
                //Делаем новую фотку слоем
                var newLayer = new Layer(streamss);
                //Старую фотку вносим в графику для изменения
                var graphic = new Graphics(layerToReplaces);
                //Удаляем старый рисунов
                graphic.Clear(Color.Empty);
                //Вставляем новые по размерам как старый
                graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplaces.Width, layerToReplaces.Height)));
            }


            //Сохранить как псд
            image.Save(outputFilePath, new PsdOptions(image));
            //Сохранить как пнг
            image.Save(outputPngFilePath, new JpegOptions());
        }
    }

Are you here ?

@Hacls Could you please provide file “F:\тестим c#\TestPSDWF\123.psd”. Also, could you please provide the code of the FindLayer method, in the case if it has issues.

This code is used for the opening of psd files with the specific options. You should use it if your file has the layer effects

PsdLoadOptions options = new PsdLoadOptions() { LoadEffectsResource = true };

How it should be used:

using (PsdImage image = (PsdImage)Image.Load(sourceFilePath, options))

PsdLoadOptions options = new PsdLoadOptions() { LoadEffectsResource = true }; 我使用了这个加载方式 但是还是不生效,我现在的版本是26.2 psd for java

@LiXiaoYu 请提供重现问题的代码以及输入文件。