Aspose.PSD за .NET 22.1 - Забележки за изданието

Ключ Резюме Категория
PSDNET-1017 Мозайка може да бъде приложена само веднъж Проблем
PSDNET-1056 Преливат временни файлове при отваряне на файл от поток Проблем
PSDNET-991 Оптимизация на рендерирането за Гаусово размазване в интелигентен филтър Функционалност
PSDNET-1044 Поддръжка на множество данни за шаблони в PattResource Функционалност

Промени в общественото API

Добавени API:

  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor(System.Int32,Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Patterns
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.TypeToolKey2
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.TypeToolKey3
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.ImageMode
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Width
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Height
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Name
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.PatternId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.PatternData
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Length
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Save(Aspose.PSD.StreamContainer)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.SetPattern(System.Int32[],Aspose.PSD.Rectangle)

Премахнати API:

  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternData
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Name
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Height
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Width
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.ImageMode
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternLength
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.SetPattern(System.Int32[],Aspose.PSD.Rectangle)

Примери за използване:

PSDNET-1017. Мозайка може да бъде приложена само веднъж

            string изходноPsd = "изход_1017.psd";
            string изходноPng = "изход_1017.png";

            using (var psdImage = (PsdImage)Image.Create(new PsdOptions() { Source = new StreamSource(new MemoryStream()), }, 500, 500))
            {
                FillLayer layer = FillLayer.CreateInstance(FillType.Color);
                psdImage.AddLayer(layer);
                VectorPath vectorPath = VectorDataProvider.CreateVectorPathForLayer(layer);
                vectorPath.FillColor = Color.Yellow;
                PathShape shape2 = new PathShape();
                shape2.Points.Add(new BezierKnot(new PointF(300, 150), true));
                shape2.Points.Add(new BezierKnot(new PointF(350, 200), true));
                shape2.Points.Add(new BezierKnot(new PointF(250, 200), true));
                shape2.IsClosed = false;
                vectorPath.Shapes.Add(shape2);

                VectorDataProvider.UpdateLayerFromVectorPath(layer, vectorPath, true);

                PatternOverlayEffect patternOverlay = layer.BlendingOptions.AddPatternOverlay();
                var новШаблон = new int[]
                                        {
                                Color.Aqua.ToArgb(), Color.Red.ToArgb(), Color.Red.ToArgb(),
                                Color.Aqua.ToArgb(), Color.Aqua.ToArgb(), Color.White.ToArgb(),
                                Color.White.ToArgb(), Color.Aqua.ToArgb(),
                                        };

                var новаГранициНаШаблона = new Rectangle(0, 0, 4, 2);
                patternOverlay.Settings.PatternData = новШаблон;
                patternOverlay.Settings.PatternWidth = новаГранициНаШаблона.Width;
                patternOverlay.Settings.PatternHeight = новаГранициНаШаблона.Height;
                patternOverlay.Settings.HorizontalOffset = новаГранициНаШаблона.X;
                patternOverlay.Settings.VerticalOffset = новаГранициНаШаблона.Y;

                layer.Update();

                var layer2 = FillLayer.CreateInstance(FillType.Color);
                psdImage.AddLayer(layer2);
                VectorPath vectorPath2 = VectorDataProvider.CreateVectorPathForLayer(layer2);
                vectorPath2.FillColor = Color.Blue;
                PathShape shape3 = new PathShape();
                shape3.Points.Add(new BezierKnot(new PointF(400, 450), true));
                shape3.Points.Add(new BezierKnot(new PointF(100, 400), true));
                shape3.Points.Add(new BezierKnot(new PointF(250, 100), true));
                shape3.IsClosed = false;
                vectorPath2.Shapes.Add(shape3);

                VectorDataProvider.UpdateLayerFromVectorPath(layer2, vectorPath2, true);

                PatternOverlayEffect patternOverlay2 = layer2.BlendingOptions.AddPatternOverlay();
                var новШаблон2 = new int[]
                                        {
                                Color.Green.ToArgb(), Color.Purple.ToArgb(), Color.Purple.ToArgb(),
                                Color.Green.ToArgb(), Color.Green.ToArgb(), Color.Black.ToArgb(),
                                Color.Black.ToArgb(), Color.Green.ToArgb(),
                                        };

                var новаГранициНаШаблона2 = new Rectangle(0, 0, 4, 2);
                patternOverlay2.Settings.PatternData = новШаблон2;
                patternOverlay2.Settings.PatternWidth = новаГранициНаШаблона2.Width;
                patternOverlay2.Settings.PatternHeight = новаГранициНаШаблона2.Height;
                patternOverlay2.Settings.HorizontalOffset = новаГранициНаШаблона2.X;
                patternOverlay2.Settings.VerticalOffset = новаГранициНаШаблона2.Y;

                psdImage.Save(изходноPsd);
                psdImage.Save(изходноPng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });

PSDNET-1056. Преливат временни файлове при отваряне на файл от поток

            using (var memStream = new MemoryStream())
            {
                byte[] fileBytes = new byte[3];
                memStream.Write(fileBytes, 0, fileBytes.Length);

                // test behaviour
                Exception exception = null;
                try
                {
                    using (var image = Image.Load(memStream))
                    {
                    }
                }
                catch (CoreExceptions.ImageLoadException mainEx)
                {
                    // search lowest level exception
                    exception = mainEx;
                    while (exception.InnerException != null)
                    {
                        exception = exception.InnerException;
                    }
                }

                // check exception
                string typeName = exception.GetType().Name; // for debugging
                if (exception is CoreExceptions.ImageLoadException)
                {
                    // it's OK
                }
                else
                {
                    // it's not OK
                    throw exception;
                }
            }

PSDNET-991. Оптимизация на рендерирането за Гаусово размазване в интелигентен филтър

          string източенФилтe = "psdnet991_layers.psd";
            string изходноPsd = "изход_psdnet991_layers.psd";
            string изходноPng = "изход_psdnet991_layers.png";

            using (var image = (PsdImage)Image.Load(източенФилтe))
            {
                SmartObjectLayer smartLayer = (SmartObjectLayer)image.Layers[1];
                Layer maskLayer = image.Layers[2];
                Layer regularLayer = image.Layers[3];

                GaussianBlurSmartFilter gaussianBlur = new GaussianBlurSmartFilter();
                gaussianBlur.Radius = 10;

                // Apply filter to SmartObject
                gaussianBlur.Apply(smartLayer);
                smartLayer.SmartFilters.UpdateResourceValues();
                smartLayer.UpdateModifiedContent();

                // Apply filter to layer mask
                gaussianBlur.ApplyToMask(maskLayer);

                //Apply filter to layer
                gaussianBlur.Apply(regularLayer);

                image.Save(изходноPsd);
                image.Save(изходноPng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
            }

PSDNET-1044. Поддръжка на множество данни за шаблони в PattResource

            string src = "psdnet1044.psd";
            string output = "out_psdnet1044.psd";

            using (var image = (PsdImage)Image.Load(src, new PsdLoadOptions() { LoadEffectsResource = true }))
            {
                PattResource pattResource = (PattResource)image.GlobalLayerResources[0];

                if (pattResource.Patterns.Length == 2)
                {
                    Console.WriteLine("Правилното четене на елементите на PattResourceData.");
                }

                var fillLayer = FillLayer.CreateInstance(FillType.Color);
                image.AddLayer(fillLayer);

                IPatternFillSettings pattSetting = fillLayer.BlendingOptions.AddPatternOverlay().Settings;

                pattSetting.PatternWidth = 3;
                pattSetting.PatternHeight = 3;
                pattSetting.PatternData = new int[]
                {
                    Color.White.ToArgb(), Color.White.ToArgb(), Color.Red.ToArgb(),
                    Color.White.ToArgb(), Color.Green.ToArgb(), Color.White.ToArgb(),
                    Color.Blue.ToArgb(), Color.White.ToArgb(), Color.White.ToArgb(),
                };

                image.Save(output);
            }

Промени в общественото API

Добавени API:

  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor(System.Double,Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Patterns
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.TypeToolKey2
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.TypeToolKey3
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.ImageMode
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Width
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Height
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResourceData.Name

Премахнати API:

  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor(System.Char[])

Примери за използване:

PSDNET-1056. Преливат временни файлове при отваряне на файл от поток

            using (var memStream = new MemoryStream())
            {
                byte[] fileBytes = new byte[3];
                memStream.Write(fileBytes, 0, fileBytes.Length);

                ...

            }

PSDNET-1044. Поддръжка на множество данни за шаблони в PattResource

            string източник = "psdnet1044.psd";
            string изход = "изход_psdnet1044.psd";

            using (var изображение = (PsdImage)Image.Load(източник, new PsdLoadOptions() { LoadEffectsResource = true }))
            {
                PattResource pattResource = (PattResource)изображение.GlobalLayerResources[0];

                ...

                image.Save(изход);
            }