Browse our Products

Aspose.PSD for .NET 20.12 - Release Notes

KeySummaryCategory
PSDNET-757Support converting layers to Smart Object LayerFeature
PSDNET-764SmartObjectLayer.ReplaceContents method throws NullReferenceException if we try to add PSB fileBug
PSDNET-773Incorrect rendering of CMYK 8-bit and CMYK 16-bit Images, if the layer is bigger than CanvasBug
PSDNET-782Saved PSB file can be opened with our API, but cannot with PhotoshopBug
PSDNET-783If we trying to change Smart Layer in a specific PSD with a shared data source we get an exceptionBug
PSDNET-172Renaming of FileFormatVersion to PsdVersion to avoid confusionEnhancement
PSDNET-620Remove Compact framework configuration from Aspose.PSD .NETEnhancement
PSDNET-765PsdImageException: Unknown resource header on trying to open PSB file with SmartObjectLayersEnhancement
PSDNET-798Move Hierarchy of Vector Mask Classes to Core Namespace to ensure uniformity of Aspose.PSD and Aspose.Imaging ProductsEnhancement

Public API Changes

Added APIs:

  • T:Aspose.PSD.FileFormats.Psd.PsdVersion
  • F:Aspose.PSD.FileFormats.Psd.PsdVersion.Psd
  • F:Aspose.PSD.FileFormats.Psd.PsdVersion.Psb
  • P:Aspose.PSD.ImageOptions.PsdOptions.PsdVersion
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.PathPoints
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.Points
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.IsClosed
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.IsLinked
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.IsOpen
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.BezierKnotRecord.Type
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord.BoundingRect
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord.Resolution
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.ClipboardRecord.Type
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData.Paths
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData.Version
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData.IsDisabled
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData.IsNotLinked
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.IVectorPathData.IsInverted
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord.#ctor(System.Boolean)
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord.IsFillStartsWithAllPixels
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.InitialFillRuleRecord.Type
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.IsClosed
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.IsOpen
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.RecordCount
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.Type
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.BezierKnotRecordsCount
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.PathOperations
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.LengthRecord.ShapeIndex
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.PathFillRuleRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.PathFillRuleRecord.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.PathFillRuleRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.PathFillRuleRecord.Type
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.PathOperations
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.PathOperations.ExcludeOverlappingShapes
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.PathOperations.CombineShapes
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.PathOperations.SubtractFrontShape
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.PathOperations.IntersectShapeAreas
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecord
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecord.#ctor
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecord.Type
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecordFactory
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecordFactory.#ctor
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathRecordFactory.ProducePathRecord(System.Byte[])
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.ClosedSubpathLengthRecord
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.ClosedSubpathBezierKnotLinked
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.ClosedSubpathBezierKnotUnlinked
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.OpenSubpathLengthRecord
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.OpenSubpathBezierKnotLinked
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.OpenSubpathBezierKnotUnlinked
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.PathFillRuleRecord
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.ClipboardRecord
  • F:Aspose.PSD.FileFormats.Core.VectorPaths.VectorPathType.InitialFillRuleRecord
  • T:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings
  • M:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.#ctor(System.Boolean,System.Int32)
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.IsShapeInvalidated
  • P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.OriginIndex
  • F:Aspose.PSD.FileFormat.Html5Canvas
  • F:Aspose.PSD.FileFormat.Apng
  • F:Aspose.PSD.FileFormat.Tga
  • T:Aspose.PSD.FileFormats.Core.Blending.BlendMode
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Absent
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Color
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Darken
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Difference
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Dissolve
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.ColorDodge
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.DarkerColor
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Divide
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Subtract
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.HardLight
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.HardMix
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Hue
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.ColorBurn
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.LinearLight
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.LinearBurn
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.LinearDodge
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.LighterColor
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Lighten
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Luminosity
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Multiply
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Normal
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Overlay
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.PinLight
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.PassThrough
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.SoftLight
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Saturation
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Screen
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.Exclusion
  • F:Aspose.PSD.FileFormats.Core.Blending.BlendMode.VividLight
  • T:Aspose.PSD.AsyncTask.AsyncTask
  • M:Aspose.PSD.AsyncTask.AsyncTask.Create(Aspose.PSD.AsyncTask.AsyncTaskAction)
  • M:Aspose.PSD.AsyncTask.AsyncTask.Create(Aspose.PSD.AsyncTask.AsyncTaskFunc)
  • T:Aspose.PSD.AsyncTask.AsyncTaskAction
  • T:Aspose.PSD.AsyncTask.AsyncTaskException
  • M:Aspose.PSD.AsyncTask.AsyncTaskException.#ctor(System.String)
  • T:Aspose.PSD.AsyncTask.AsyncTaskFunc
  • T:Aspose.PSD.AsyncTask.AsyncTaskProgress
  • M:Aspose.PSD.AsyncTask.AsyncTaskProgress.#ctor(System.Int32,System.TimeSpan)
  • F:Aspose.PSD.AsyncTask.AsyncTaskProgress.Duration
  • F:Aspose.PSD.AsyncTask.AsyncTaskProgress.ProgressPercentage
  • T:Aspose.PSD.AsyncTask.CompleteCallback
  • T:Aspose.PSD.AsyncTask.IAsyncTask
  • P:Aspose.PSD.AsyncTask.IAsyncTask.Progress
  • P:Aspose.PSD.AsyncTask.IAsyncTask.IsBusy
  • P:Aspose.PSD.AsyncTask.IAsyncTask.IsCanceled
  • P:Aspose.PSD.AsyncTask.IAsyncTask.IsFaulted
  • P:Aspose.PSD.AsyncTask.IAsyncTask.Error
  • P:Aspose.PSD.AsyncTask.IAsyncTask.Result
  • M:Aspose.PSD.AsyncTask.IAsyncTask.RunAsync
  • M:Aspose.PSD.AsyncTask.IAsyncTask.RunAsync(System.Threading.ThreadPriority)
  • M:Aspose.PSD.AsyncTask.IAsyncTask.Cancel
  • M:Aspose.PSD.AsyncTask.IAsyncTask.Abort
  • M:Aspose.PSD.AsyncTask.IAsyncTask.SetProgressCallback(Aspose.PSD.AsyncTask.ProgressCallback)
  • M:Aspose.PSD.AsyncTask.IAsyncTask.SetCompleteCallback(Aspose.PSD.AsyncTask.CompleteCallback)
  • T:Aspose.PSD.AsyncTask.IAsyncTaskState
  • P:Aspose.PSD.AsyncTask.IAsyncTaskState.IsCanceled
  • P:Aspose.PSD.AsyncTask.IAsyncTaskState.Progress
  • M:Aspose.PSD.AsyncTask.IAsyncTaskState.SetProgress(System.Int32)
  • T:Aspose.PSD.AsyncTask.ProgressCallback
  • M:Aspose.PSD.ColorPaletteHelper.GetCloseImagePalette(Aspose.PSD.RasterImage,Aspose.PSD.Rectangle,System.Int32,System.Boolean)
  • M:Aspose.PSD.ColorPaletteHelper.HasTransparentColors(Aspose.PSD.IColorPalette)
  • T:Aspose.PSD.Evalute.EvalException
  • P:Aspose.PSD.Evalute.EvalException.Message
  • F:Aspose.PSD.FileFormats.Bmp.BitmapCompression.Dxt1
  • P:Aspose.PSD.FileFormats.Pdf.PdfCoreOptions.PdfCompliance
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.PhotoshopResources
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.XPTitle
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.XPComment
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.XPAuthor
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.XPKeywords
  • F:Aspose.PSD.FileFormats.Tiff.Enums.TiffTags.XPSubject
  • T:Aspose.PSD.FlatArray.Exceptions.FlatArrayException
  • M:Aspose.PSD.Image.GetImage2Export(Aspose.PSD.ImageOptionsBase,Aspose.PSD.Rectangle)
  • P:Aspose.PSD.ImageOptions.MultiPageOptions.PageRasterizationOptions
  • P:Aspose.PSD.ImageOptions.MultiPageOptions.MergeLayers
  • F:Aspose.PSD.ImageOptions.PngOptions.DefaultCompressionLevel
  • P:Aspose.PSD.ImageOptions.TiffOptions.CompressedQuality
  • P:Aspose.PSD.ImageOptions.TiffOptions.XPTitle
  • P:Aspose.PSD.ImageOptions.TiffOptions.XPComment
  • P:Aspose.PSD.ImageOptions.TiffOptions.XPAuthor
  • P:Aspose.PSD.ImageOptions.TiffOptions.XPKeywords
  • P:Aspose.PSD.ImageOptions.TiffOptions.XPSubject
  • P:Aspose.PSD.ImageOptionsBase.FullFrame
  • T:Aspose.PSD.PdfComplianceVersion
  • F:Aspose.PSD.PdfComplianceVersion.Pdf15
  • F:Aspose.PSD.PdfComplianceVersion.PdfA1a
  • F:Aspose.PSD.PdfComplianceVersion.PdfA1b
  • M:Aspose.PSD.PixelDataFormat.GetGrayscaleAlpha(System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetRgb(System.Int32,System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetRgba(System.Int32,System.Int32,System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetRgbIndexed(System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetYCbCr(System.Int32,System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetCmyk(System.Int32,System.Int32,System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetCmyka(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)
  • M:Aspose.PSD.PixelDataFormat.GetCieLab(System.Int32,System.Int32,System.Int32)
  • F:Aspose.PSD.PixelFormat.CieLab
  • M:Aspose.PSD.RasterImage.Save(System.IO.Stream,Aspose.PSD.ImageOptionsBase,Aspose.PSD.Rectangle)
  • M:Aspose.PSD.RectangleF.op_Multiply(Aspose.PSD.RectangleF,System.Single)
  • M:Aspose.PSD.RectangleF.op_Division(Aspose.PSD.RectangleF,System.Single)

Removed APIs:

  • T:Aspose.PSD.FileFormats.Psd.FileFormatVersion
  • F:Aspose.PSD.FileFormats.Psd.FileFormatVersion.Psd
  • F:Aspose.PSD.FileFormats.Psd.FileFormatVersion.Psb
  • P:Aspose.PSD.ImageOptions.PsdOptions.FileFormatVersion
  • T:Aspose.PSD.FileFormats.Psd.Layers.BlendMode
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Absent
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Color
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Darken
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Difference
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Dissolve
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.ColorDodge
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.DarkerColor
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Divide
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Subtract
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.HardLight
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.HardMix
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Hue
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.ColorBurn
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.LinearLight
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.LinearBurn
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.LinearDodge
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.LighterColor
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Lighten
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Luminosity
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Multiply
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Normal
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Overlay
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.PinLight
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.PassThrough
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.SoftLight
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Saturation
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Screen
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.Exclusion
  • F:Aspose.PSD.FileFormats.Psd.Layers.BlendMode.VividLight
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.Points
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.IsClosed
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.IsLinked
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.IsOpen
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.Type
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.ClipboardRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.ClipboardRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.ClipboardRecord.Type
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.#ctor(System.Boolean)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.IsFillStartsWithAllPixels
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.Type
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.#ctor(System.Byte[])
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.IsClosed
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.IsOpen
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.Type
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.BezierKnotRecordsCount
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.PathOperations
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.ShapeIndex
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathFillRuleRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathFillRuleRecord.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathFillRuleRecord.Type
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecord
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecord.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecord.Type
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecordFactory
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecordFactory.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathRecordFactory.ProducePathRecord(System.Byte[])
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.ClosedSubpathLengthRecord
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.ClosedSubpathBezierKnotLinked
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.ClosedSubpathBezierKnotUnlinked
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.OpenSubpathLengthRecord
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.OpenSubpathBezierKnotLinked
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.OpenSubpathBezierKnotUnlinked
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.PathFillRuleRecord
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.ClipboardRecord
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorPathType.InitialFillRuleRecord
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.#ctor(System.Boolean,System.Int32)
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.IsShapeInvalidated
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.OriginIndex
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.ExcludeOverlappingShapes
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.CombineShapes
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.SubtractFrontShape
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.IntersectShapeAreas
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData.Paths
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData.IsDisabled
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData.IsNotLinked
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.IVectorPathData.IsInverted
  • M:Aspose.PSD.Image.GetImage2Export(Aspose.PSD.ImageOptionsBase)

Usage examples:

PSDNET-757. Support converting layers to Smart Object Layer

            string dataDir = "PSDNET757_1\\";
            string outputDir = dataDir + "output\\";

            // These examples demonstrate how to convert layers to a smart object layer in the PSD file
            ExampleOfConvertingToSmartObjectLayer("ThreeRegularLayers", 0, 1);
            ExampleOfConvertingToSmartObjectLayer("FourWithMasks", 0, 2);
            ExampleOfConvertingToSmartObjectLayer("dummy", 2, 3, 1);
            ExampleOfConvertingToSmartObjectLayer("dummy_group", 6, 2);
            ExampleOfConvertingToSmartObjectLayer("argb16bit_5x5", 0);
            ExampleOfConvertingToSmartObjectLayer("cmyk16bit_5x5", 0);
            ExampleOfConvertingToSmartObjectLayer("grayscale5x5", 0);

            void ExampleOfConvertingToSmartObjectLayer(string filePath, params int[] layerNumbers)
            {
                string outputFilePath = outputDir + "Converted_" + filePath + ".psd";
                string pngOutputPath = Path.ChangeExtension(outputFilePath, ".png");
                using (PsdImage image = (PsdImage)Image.Load(dataDir + filePath + ".psd"))
                {
                    var layerCount = image.Layers.Length;
                    var smartObjectLayer = image.SmartObjectProvider.ConvertToSmartObject(layerNumbers);
                    var newLayerCount = image.Layers.Length;

                    image.Save(pngOutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                    image.Save(outputFilePath, new PsdOptions(image));
                }
            }

PSDNET-764. SmartObjectLayer.ReplaceContents method throws NullReferenceException if we try to add PSB file

            // This example demonstrates that the ReplaceContents method works correctly with the specified PSD file.
            const string baseFolder = "PSDNET764_1\\";
            const string outputFolder = baseFolder + "output\\";
            const string fileName = "CommonPsb.psd";
            const string filePath = baseFolder + fileName;
            const string newContentPath = baseFolder + "Smart2.psb";
            const string outputFilePath = outputFolder + "ChangedPsd";
            const string pngOutputPath = outputFilePath + ".png";
            const string psdOutputPath = outputFilePath + ".psd";
            using (PsdImage psd = (PsdImage)Image.Load(filePath))
            {
                for (int i = 0; i < psd.Layers.Length; i++)
                {
                    var layer = psd.Layers[i];
                    SmartObjectLayer smartObjectLayer = layer as SmartObjectLayer;
                    if (smartObjectLayer != null)
                    {
                        smartObjectLayer.ReplaceContents(newContentPath); // No exception should be thrown.

                        psd.Save(psdOutputPath);
                        psd.Save(pngOutputPath, new PngOptions() { ColorType = Aspose.PSD.FileFormats.Png.PngColorType.TruecolorWithAlpha });
                    }
                }
            }

PSDNET-765. PsdImageException: Unknown resource header on trying to open PSB file with SmartObjectLayers

            // This example demonstrates that the specified PSD file is loaded, saved, and loaded again correctly.
            // Test manually that the saved files can be opened by Adobe® Photoshop®
            string baseFolder = "PSDNET765_1\\";
            string outputFolder = baseFolder + "output\\";
            string fileName = "CommonPsb.psb";
            string filePath = baseFolder + fileName;
            string psbOutputPath = outputFolder + fileName + "_saved.psb";
            string psdOutputPath = outputFolder + fileName + "_saved_as_psd.psd";
            using (PsdImage image = (PsdImage)Image.Load(filePath))
            {
                image.Save(psbOutputPath, new PsdOptions(image) { PsdVersion = PsdVersion.Psb, Resources = null, XmpData = null });
                image.Save(psdOutputPath, new PsdOptions(image) { PsdVersion = PsdVersion.Psd, Resources = null, XmpData = null });
            }

            using (PsdImage image1 = (PsdImage)Image.Load(psdOutputPath))
            {
                Console.WriteLine("PSD loaded");
            }

            using (PsdImage image2 = (PsdImage)Image.Load(psbOutputPath))
            {
                Console.WriteLine("PSB loaded");
            }

PSDNET-773. Incorrect rendering of CMYK 8-bit and CMYK 16-bit Images, if the layer is bigger than Canvas

            string baseFolder = "PSDNET773_1\\";
            string outputFolder = baseFolder + "output\\";

            // Tests that Psd Image with CMYK mode and 16 bit renders correctly if a layer is bigger than Canvas.
            SaveCmykImageCorrectlyWhenLayerIsBiggerThanCanvas("Test1");

            // Tests that Psd Image with CMYK mode and 8 bit renders correctly if a layer is bigger than Canvas.
            SaveCmykImageCorrectlyWhenLayerIsBiggerThanCanvas("Test2");

            void SaveCmykImageCorrectlyWhenLayerIsBiggerThanCanvas(string fileName)
            {
                string sourceFilePath = baseFolder + fileName + ".psd";
                string outputFilePath = outputFolder + fileName + "_output.psd";
                string outputPngFilePath = Path.ChangeExtension(outputFilePath, ".png");
                PsdLoadOptions options = new PsdLoadOptions();
                using (PsdImage image = (PsdImage)Image.Load(sourceFilePath, options))
                {
                    image.Save(outputFilePath, new PsdOptions(image));
                    image.Save(outputPngFilePath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

PSDNET-782. Saved PSB file can be opened with our API, but cannot with Photoshop

        // This example demonstrates that the specified PSD file is saved and loaded correctly.
        // Test manually that the saved file can be opened by Adobe® Photoshop®
        LoadAndSaveThenLoadPsbImage("CommonPsb0.psb");
        void LoadAndSaveThenLoadPsbImage(string fullFileName)
        {
            string fileName = Path.GetFileNameWithoutExtension(fullFileName);

            string filePath = baseFolder + fullFileName;
            string psbOutputPath = outputFolder + fileName + "_saved.psb";
            string psdOutputPath = outputFolder + fileName + "_saved_as_psd.psd";
            using (PsdImage image = (PsdImage)Image.Load(filePath))
            {
                image.Save(psbOutputPath, new PsdOptions(image) { PsdVersion = PsdVersion.Psb, XmpData = null, Resources = null });
                Console.WriteLine("PSB saved");
                image.Save(psdOutputPath, new PsdOptions(image) { PsdVersion = PsdVersion.Psd, XmpData = null, Resources = null });
                Console.WriteLine("PSD saved");
            }

            using (PsdImage image1 = (PsdImage)Image.Load(psdOutputPath))
            {
                Console.WriteLine("PSD loaded");
            }

            using (PsdImage image2 = (PsdImage)Image.Load(psbOutputPath))
            {
                Console.WriteLine("PSB loaded");
            }
        }

PSDNET-783. If we trying to change Smart Layer in a specific PSD with a shared data source we get an exception

            string baseFolder = "PSDNET783_1\\";
            string outputDir = baseFolder + "output\\";
            string filePath = baseFolder + "5741b34576ee1757385296ecb6e8ee88.psd";
            var newContentPath1 = baseFolder + "smartReplace1.png";
            var newContentPath2 = baseFolder + "smartReplace2.png";
            string outputFilePath = outputDir + "DataSourceIsShared";
            string pngOutputPath = outputFilePath + ".png";
            string psdOutputPath = outputFilePath + ".psd";
            using (PsdImage image = (PsdImage)Image.Load(filePath))
            {
                for (int i = 0; i < image.Layers.Length; i++)
                {
                    if (image.Layers[i].GetType().Name.Contains("SmartObjectLayer"))
                    {
                        SmartObjectLayer smartObjectLayer = (SmartObjectLayer)image.Layers[i];

                        if (i % 2 == 1)
                        {
                            smartObjectLayer.ReplaceContents(newContentPath1);
                        }
                        else
                        {
                            smartObjectLayer.ReplaceContents(newContentPath2);
                        }
                    }
                }

                image.Save(pngOutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                image.Save(psdOutputPath, new PsdOptions(image));
            }