Catatan Rilis Aspose.PSD untuk .NET 20.2

Kunci Ringkasan Kategori
PSDNET-206 Peningkatan kemampuan merender teks berbagai warna dalam Lapisan Teks Fitur
PSDNET-369 Dukungan untuk sumber clbl (Sumber lapisan berisi info tentang elemen pengguntingan Gabungan) Fitur
PSDNET-274 Dukungan untuk sumber blwh (Sumber berisi Data Layer Penyesuaian Hitam & Putih) Fitur
PSDNET-230 Kemampuan untuk mengekspor Grup Lapisan ke Jpeg/Png/Tiff/Gif/Bmp/Jpeg2000/Psd/Psb/Pdf Fitur
PSDNET-372 Dukungan untuk Sumber lspf (Berisi pengaturan tentang pengaturan Perlindungan Lapisan) Fitur
PSDNET-370 Dukungan untuk sumber infx (Berisi data tentang Pencampuran elemen interior) Fitur
PSDNET-251 Refaktorisasi PsdImage dan Layer untuk mengubah perilaku Transformasi (Ubah ukuran/putar/crop yang benar untuk masker lapisan jika kita mengubah satu lapisan secara terpisah) Peningkatan
PSDNET-276 Dalam beberapa pengaturan globalisasi, gambar raster AI tidak dapat dibuka Bug
PSDNET-194  Setelah melakukan operasi FlipRotate pada Layer, Gambar PSD menjadi tidak bisa dibaca Bug
PSDNET-177. System.ArgumentException saat memuat file PSD Bug
PSDNET-249 Setelah menggunakan metode transformasi untuk layer saja, layer yang disimpan memiliki batas yang tidak benar atau masker Bug

Perubahan API Publik

API yang Ditambahkan:

  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerMaskDataFull.UserMaskRectangle
  • M:Aspose.PSD.FileFormats.Ai.AiDataSection.ReleaseManagedResources
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerGroup.Width
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerGroup.Height
  • T:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Reds
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Yellows
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Greens
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Cyans
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Blues
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Magentas
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.UseTint
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.BwPresetKind
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.BlackAndWhitePresetFileName
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColor
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorRed
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorGreen
  • P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorBlue
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.TypeToolKey
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Key
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Length
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.PsdVersion
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Reds
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Yellows
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Greens
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Cyans
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Blues
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Magentas
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.UseTint
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.BwPresetKind
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.BlackAndWhitePresetFileName
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.TintColor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lr16Resource.#ctor
  • P:Aspose.PSD.Xmp.Types.Derived.RenditionClass.DefinedValues
  • T:Aspose.PSD.AggregateException
  • M:Aspose.PSD.CmykColor.Equals(System.Object)
  • T:Aspose.PSD.CompositeException
  • T:Aspose.PSD.CoreExceptions.IndexOutOFRangeException
  • M:Aspose.PSD.CoreExceptions.IndexOutOFRangeException.#ctor(System.String)
  • M:Aspose.PSD.CoreExceptions.IndexOutOFRangeException.#ctor(System.String,System.Exception)
  • F:Aspose.PSD.FileFormat.Otg
  • T:Aspose.PSD.FileFormats.Jpeg2000.Jpeg2000CustomException
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.#ctor(System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.#ctor(System.Byte[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Key
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Length
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.PsdVersion
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.IsDataStoredDiscretely
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetChannelData(System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetActiveManager
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetCurveManager
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.TypeToolKey
  • T:Aspose.PSD.ImageOptions.TiffOptionsUtils
  • M:Aspose.PSD.ImageOptions.TiffOptionsUtils.#ctor
  • M:Aspose.PSD.ImageOptions.TiffOptionsUtils.GetValidTagsCount(Aspose.PSD.FileFormats.Tiff.TiffDataType[])
  • P:Aspose.PSD.ImageOptionsBase.ProgressEventHandler
  • P:Aspose.PSD.LoadOptions.ProgressEventHandler
  • M:Aspose.PSD.Matrix.#ctor(Aspose.PSD.Matrix)
  • M:Aspose.PSD.Metered.Equals(System.Object)
  • T:Aspose.PSD.ProgressEventHandler
  • T:Aspose.PSD.ProgressManagement.EventType
  • F:Aspose.PSD.ProgressManagement.EventType.RelativeProgress
  • F:Aspose.PSD.ProgressManagement.EventType.StageChange
  • F:Aspose.PSD.ProgressManagement.EventType.Initialization
  • F:Aspose.PSD.ProgressManagement.EventType.PreProcessing
  • F:Aspose.PSD.ProgressManagement.EventType.Processing
  • F:Aspose.PSD.ProgressManagement.EventType.Finalization
  • T:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo
  • P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.Description
  • P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.EventType
  • P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.MaxValue
  • P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.Value
  • M:Aspose.PSD.RasterImage.GetSkewAngle
  • M:Aspose.PSD.RasterImage.NormalizeAngle
  • M:Aspose.PSD.RasterImage.NormalizeAngle(System.Boolean,Aspose.PSD.Color)

API yang Dihapus:

  • M:Aspose.PSD.FileFormats.Ai.AiDataSection.Dispose
  • P:Aspose.PSD.FileFormats.Ai.AiRasterImageSection.ImageRectangle
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lr16Resource.#ctor(System.Int32)
  • F:Aspose.PSD.Xmp.Types.Derived.RenditionClass.DefinedValues

Contoh Penggunaan:

PSDNET-206. Peningkatan kemampuan merender teks berbagai warna dalam Lapisan Teks

  using (var psdImage = (PsdImage)Image.Load("text_ethalon_different_colors.psd"))

{

    var txtLayer = (TextLayer)psdImage.Layers[1];

    txtLayer.TextData.UpdateLayerData();

    psdImage.Save("output.png", new PngOptions());

}

PSDNET-369. Dukungan untuk sumber clbl (Sumber lapisan berisi info tentang elemen pengguntingan Gabungan)

        void AssertIsTrue(bool condition, string message)

        {

            if (!condition)

            {

                throw new FormatException(message);

            }

        }

        string sourceFileName = "SampleForResource.psd";

        string destinationFileName = "Output" + sourceFileName;

        ClblResource GetClblResource(PsdImage im)

        {

            foreach (var layer in im.Layers)

            {

                foreach (var layerResource in layer.Resources)

                {

                    if (layerResource is ClblResource)

                    {

                        return (ClblResource)layerResource;

                    }

                }

            }

            throw new Exception("The specified ClblResource not found");

        }

        using (PsdImage im = (PsdImage)Image.Load(sourceFileName))

        {

            var resource = GetClblResource(im);

            AssertIsTrue(resource.BlendClippedElements, "The ClblResource.BlendClippedElements should be true");

            // Test editing and saving

            resource.BlendClippedElements = false;

            im.Save(destinationFileName);

        }

        using (PsdImage im = (PsdImage)Image.Load(destinationFileName))

        {

            var resource = GetClblResource(im);

            AssertIsTrue(!resource.BlendClippedElements, "The ClblResource.BlendClippedElements should change to false");

        }

PSDNET-274. Dukungan untuk sumber blwh (Sumber berisi Data Layer Penyesuaian Hitam & Putih)

         const string ActualPropertyValueIsWrongMessage = "Expected property value is not equal to actual value";

        void AssertIsTrue(bool condition, string message)

        {

            if (!condition)

            {

                throw new FormatException(message);

            }

        }

        void ExampleSupportOfBlwhResource(

            string sourceFileName,

            int reds,

            int yellows,

            int greens,

            int cyans,

            int blues,

            int magentas,

            bool useTint,

            int bwPresetKind,

            string bwPresetFileName,

            double tintColorRed,

            double tintColorGreen,

            double tintColorBlue,

            int tintColor,

            int newTintColor)

        {

            string destinationFileName = "Output" + sourceFileName;

            bool isRequiredResourceFound = false;

            using (PsdImage im = (PsdImage)Image.Load(sourceFileName))

            {

                foreach (var layer in im.Layers)

                {

                    foreach (var layerResource in layer.Resources)

                    {

                        if (layerResource is BlwhResource)

                        {

                            var blwhResource = (BlwhResource)layerResource;

                            var blwhLayer = (BlackWhiteAdjustmentLayer)layer;

                            isRequiredResourceFound = true;

                            AssertIsTrue(blwhResource.Reds == reds, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Yellows == yellows, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Greens == greens, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Cyans == cyans, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Blues == blues, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Magentas == magentas, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.UseTint == useTint, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.TintColor == tintColor, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.BwPresetKind == bwPresetKind, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.BlackAndWhitePresetFileName == bwPresetFileName, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorRed - tintColorRed) < 1e-6, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorGreen - tintColorGreen) < 1e-6, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorBlue - tintColorBlue) < 1e-6, ActualPropertyValueIsWrongMessage);

                            // Test editing and saving

                            blwhResource.Reds = reds - 15;

                            blwhResource.Yellows = yellows - 15;

                            blwhResource.Greens = greens + 15;

                            blwhResource.Cyans = cyans + 15;

                            blwhResource.Blues = blues - 15;

                            blwhResource.Magentas = magentas - 15;

                            blwhResource.UseTint = !useTint;

                            blwhResource.BwPresetKind = 4;

                            blwhResource.BlackAndWhitePresetFileName = "bwPresetFileName";

                            blwhLayer.TintColorRed = tintColorRed - 60;

                            blwhLayer.TintColorGreen = tintColorGreen - 60;

                            blwhLayer.TintColorBlue = tintColorBlue - 60;

                            im.Save(destinationFileName);

                            break;

                        }

                    }

                }

            }

            AssertIsTrue(isRequiredResourceFound, "The specified BlwhResource not found");

            isRequiredResourceFound = false;

            using (PsdImage im = (PsdImage)Image.Load(destinationFileName))

            {

                foreach (var layer in im.Layers)

                {

                    foreach (var layerResource in layer.Resources)

                    {

                        if (layerResource is BlwhResource)

                        {

                            var blwhResource = (BlwhResource)layerResource;

                            var blwhLayer = (BlackWhiteAdjustmentLayer)layer;

                            isRequiredResourceFound = true;

                            AssertIsTrue(blwhResource.Reds == reds - 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Yellows == yellows - 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Greens == greens + 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Cyans == cyans + 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Blues == blues - 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.Magentas == magentas - 15, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.UseTint == !useTint, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.TintColor == newTintColor, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.BwPresetKind == 4, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(blwhResource.BlackAndWhitePresetFileName == "bwPresetFileName", ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorRed - tintColorRed + 60) < 1e-6, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorGreen - tintColorGreen + 60) < 1e-6, ActualPropertyValueIsWrongMessage);

                            AssertIsTrue(Math.Abs(blwhLayer.TintColorBlue - tintColorBlue + 60) < 1e-6, ActualPropertyValueIsWrongMessage);

                            break;

                        }

                    }

                }

            }

            AssertIsTrue(isRequiredResourceFound, "The specified BlwhResource not found");

        }

        ExampleSupportOfBlwhResource(

            "BlackWhiteAdjustmentLayerStripesMask.psd",

            0x28,

            0x3c,

            0x28,

            0x3c,

            0x14,

            0x50,

            false,

            1,

            "\0",

            225.00045776367188,

            211.00067138671875,

            179.00115966796875,

            -1977421,

            -5925001);

        ExampleSupportOfBlwhResource(

            "BlackWhiteAdjustmentLayerStripesMask2.psd",

            0x80,

            0x40,

            0x20,

            0x10,

            0x08,

            0x04,

            true,

            4,

            "\0",

            239.996337890625,

            127.998046875,

            63.9990234375,

            -1015744,

            -4963324);

        Console.WriteLine("Pembaruan BlwhResource berfungsi seperti yang diharapkan. Tekan tombol apa saja.");

PSDNET-230. Kemampuan untuk mengekspor Grup Lapisan ke Jpeg/Png/Tiff/Gif/Bmp/Jpeg2000/Psd/Psb/Pdf

  using (var psdImage = (PsdImage)Image.Load("1.psd"))

            {

                // folder dengan latar belakang

                LayerGroup bg_folder = (LayerGroup)psdImage.Layers[0];

                // folder dengan konten

                LayerGroup content_folder = (LayerGroup)psdImage.Layers[4];

                bg_folder.Save("background.png", new PngOptions());

                content_folder.Save("content.png", new PngOptions());

            }

 PSDNET-372. Dukungan untuk Sumber lspf (Berisi pengaturan tentang pengaturan Perlindungan Lapisan)

         const string ActualPropertyValueIsWrongMessage = "Expected property value is not equal to actual value";

        void AssertIsTrue(bool condition, string message)

        {

            if (!condition)

            {

                throw new FormatException(message);

            }

        }

        string sourceFileName = "SampleForResource.psd";

        string destinationFileName = "Output" + sourceFileName;

        bool isRequiredResourceFound = false;

        using (PsdImage im = (PsdImage)Image.Load(sourceFileName))

        {

            foreach (var layer in im.Layers)

            {

                foreach (var layerResource in layer.Resources)

                {

                    if (layerResource is LspfResource)

                    {

                        var resource = (LspfResource)layerResource;

                        isRequiredResourceFound = true;

                        AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);

                        // Test editing and saving

                        resource.IsCompositeProtected = true;

                        AssertIsTrue(true == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);

                        resource.IsCompositeProtected = false;

                        resource.IsPositionProtected = true;

                        AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(true == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);

                        resource.IsPositionProtected = false;

                        resource.IsTransparencyProtected = true;

                        AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(true == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);

                        resource.IsCompositeProtected = true;

                        resource.IsPositionProtected = true;

                        resource.IsTransparencyProtected = true;

                        im.Save(destinationFileName);

                        break;

                    }

                }

            }

        }

        AssertIsTrue(isRequiredResourceFound, "Sumber Lspf yang ditentukan tidak ditemukan");

        isRequiredResourceFound = false;

        using (PsdImage im = (PsdImage)Image.Load(destinationFileName))

        {

            foreach (var layer in im.Layers)

            {

                foreach (var layerResource in layer.Resources)

                {

                    if (layerResource is LspfResource)

                    {

                        var resource = (LspfResource)layerResource;

                        isRequiredResourceFound = true;

                        AssertIsTrue(resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);

                        AssertIsTrue(resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);

                        break;

                    }

                }

            }

        }

        AssertIsTrue(isRequiredResourceFound, "Sumber Lspf yang ditentukan tidak ditemukan");

        Console.WriteLine("Pembaruan Sumber Lspf berfungsi seperti yang diharapkan. Tekan tombol apa saja.");

 PSDNET-370. Dukungan untuk sumber infx (Berisi data tentang Pencampuran elemen interior)

         void AssertIsTrue(bool condition, string message)

        {

            if (!condition)

            {

                throw new FormatException(message);

            }

        }

        string sourceFileName = "SampleForResource.psd";

        string destinationFileName = "Output" + sourceFileName;

        bool isRequiredResourceFound = false;

        using (PsdImage im = (PsdImage)Image.Load(sourceFileName))

        {

            foreach (var layer in im.Layers)

            {

                foreach (var layerResource in layer.Resources)

                {

                    if (layerResource is InfxResource)

                    {

                        var resource = (InfxResource)layerResource;

                        isRequiredResourceFound = true;

                        AssertIsTrue(!resource.BlendInteriorElements, "InfxResource.BlendInteriorElements should be false");

                        // Test editing and saving

                        resource.BlendInteriorElements = true;

                        im.Save(destinationFileName);

                        break;

                    }

                }

            }

        }

        AssertIsTrue(isRequiredResourceFound, "Sumber Infx yang ditentukan tidak ditemukan");

        isRequiredResourceFound = false;

        using (PsdImage im = (PsdImage)Image.Load(destinationFileName))

        {

            foreach (var layer in im.Layers)

            {

                foreach (var layerResource in layer.Resources)

                {

                    if (layerResource is InfxResource)

                    {

                        var resource = (InfxResource)layerResource;

                        isRequiredResourceFound = true;

                        AssertIsTrue(resource.BlendInteriorElements, "InfxResource.BlendInteriorElements harus berubah menjadi true");

                        break;

                    }

                }

            }

        }

        AssertIsTrue(isRequiredResourceFound, "Sumber Infx yang ditentukan tidak ditemukan");

PSDNET-251. Refaktorisasi PsdImage dan Layer untuk mengubah perilaku Transformasi (Ubah ukuran/putar/crop yang benar untuk masker lapisan jika kita mengubah satu lapisan secara terpisah)

             var enums = (RotateFlipType[])Enum.GetValues(typeof(RotateFlipType));

            var fileNames = new string[]

            {

                "OneRegularAndOneAdjustmentWithVectorAndLayerMask",

                "OneRegularAndOneAdjustmentWithLayerMask", 

                "TextLayer",

                "LinkedShapesWithText"

            };

            foreach (string fileName in fileNames)

            {

                foreach (RotateFlipType rotateFlipType in enums)

                {

                    string sourceFileName = fileName + ".psd";

                    string destinationFileName = fileName + "_" + rotateFlipType;

                    var psdLoadOptions = new PsdLoadOptions() { LoadEffectsResource = true };

                    using (PsdImage image = (PsdImage)Image.Load(sourceFileName, psdLoadOptions))

                    {

                        image.RotateFlip(rotateFlipType);

                        image.Save(destinationFileName);

                    }

                }

            }

PSDNET-276. Dalam beberapa pengaturan globalisasi, gambar raster AI tidak dapat dibuka

        string sourceFileName = "form_raster_8.ai";

        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru_RU");

        System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;

        using (AiImage image = (AiImage)Image.Load(sourceFileName))

        {

            // tidak boleh ada pengecualian yang dilempar

        }

PSDNET-194. Setelah melakukan operasi FlipRotate pada Layer, Gambar PSD menjadi tidak bisa dibaca