Catatan Rilis Aspose.PSD untuk .NET 20.4

Kunci Ringkasan Kategori
PSDNET-567 Dukungan untuk sumber daya ‘Vector Origination Data’ Fitur
PSDNET-373 Dukungan untuk lclrResource (Pengaturan warna lembaran) Fitur
PSDNET-563 Dukungan untuk properti dari data LengthRecord. (Operasi jalur (operasi boolean), indeks bentuk dalam lapisan, jumlah catatan simpul bezier) Fitur
PSDNET-425 Dukungan untuk Warna Latar Belakang dari Sumber Daya Bagian Gambar #1010 Fitur
PSDNET-530 Penambahan Layer Isi secara dinamis Fitur
PSDNET-424 Dukungan untuk Informasi Tepi dari Sumber Daya Bagian Gambar #1009 Fitur
PSDNET-592 Dukungan untuk Lapisan dalam File Format AI Fitur
PSDNET-256 Dukungan Membaca dan Mengedit Efek Lapisan Gradient Overlay Fitur
PSDNET-257 Pencitraan Efek Lapisan Gradient Overlay Fitur
PSDNET-585 Perubahan properti GradientOverlayEffect.BlendMode tidak ditampilkan di Photoshop Bug
PSDNET-561 Memperbaiki penyimpanan gambar PSD dengan ColorMode Grayscale dan 16 bit per saluran ke format PSD grayscale Bug
PSDNET-560 Memperbaiki penyimpanan gambar PSD dengan ColorMode Grayscale dan 16 bit per saluran ke format PNG Bug

Perubahan API Publik

API Ditambahkan:

  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Name
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsTemplate
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsLocked
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsShown
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPrinted
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPreview
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsImagesDimmed
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.DimValue
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.ColorNumber
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Red
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Green
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Blue
  • M:Aspose.PSD.FileFormats.Psd.Layers.FillLayers.FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType)
  • T:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource
  • M:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.DataSize
  • P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.MinimalVersion
  • P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.Color
  • T:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource
  • M:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.#ctor
  • P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.DataSize
  • P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.MinimalVersion
  • P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Width
  • P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Unit
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.#ctor(System.Boolean)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.#ctor
  • 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.VogkResource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.TypeToolKey
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Signature
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Key
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.PsdVersion
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Length
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.ShapeOriginSettings
  • 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
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.FillSettings.GradientColorPoint.#ctor(Aspose.PSD.Color,System.Int32,System.Int32)

API Dihapus:

  • Tidak Ada

Contoh Penggunaan:

PSDNET-567. Dukungan untuk sumber daya ‘Vector Origination Data’

         // Dukungan VogkResource

        static void ContohDukunganVogkResource()

        {

            string namaFile = "VectorOriginationDataResource.psd";

            string namaKeluaranFile = "keluaran_VectorOriginationDataResource_.psd";

            using (var gambarPsd = (PsdImage)Image.Load(namaFile))

            {

                var sumberDaya = GetVogkResource(gambarPsd);

                // Membaca

                if (sumberDaya.ShapeOriginSettings.Length != 1 ||

                    !sumberDaya.ShapeOriginSettings[0].IsShapeInvalidated ||

                    sumberDaya.ShapeOriginSettings[0].OriginIndex != 0)

                {

                    throw new Exception("VogkResource dibaca salah.");

                }

                // Mengedit

                sumberDaya.ShapeOriginSettings = new[]

                {

                    sumberDaya.ShapeOriginSettings[0],

                    new VectorShapeOriginSettings(true, 1)

                };

                gambarPsd.Save(namaKeluaranFile);

            }

        }

        static VogkResource GetVogkResource(PsdImage gambar)

        {

            var lapisan = gambar.Layers[1];

            VogkResource sumberDaya = null;

            var sumberDayaLayer = lapisan.Resources;

            for (int i = 0; i < sumberDayaLayer.Length; i++)

            {

                if (sumberDayaLayer[i] is VogkResource)

                {

                    sumberDaya = (VogkResource)sumberDayaLayer[i];

                    break;

                }

            }

            if (sumberDaya == null)

            {

                throw new Exception("SumberDaya VogkResource tidak ditemukan.");

            }

            return sumberDaya;

        }   

PSDNET-373. Dukungan untuk lclrResource (Pengaturan warna lembaran)

         static void PeriksaWarnaLembaranDanBalik(SheetColorHighlightEnum[] warnaLembaran, PsdImage img)

        {

            int jumlahLayer = img.Layers.Length;

            for (int indeksLapisan = 0; indeksLapisan < jumlahLayer; indeksLapisan++)

            {

                Layer lapisan = img.Layers[indeksLapisan];

                LayerResource[] sumberDaya = lapisan.Resources;

                foreach (LayerResource sumberDayaLapisan in sumberDaya)

                {

                    // Sumber daya lcrl selalu ada dalam daftar sumber daya file psd.

                    LclrResource sumberDaya = sumberDayaLapisan as LclrResource;

                    if (sumberDaya != null)

                    {

                        if (sumberDaya.Color != warnaLembaran[indeksLapisan])

                        {

                            throw new Exception("Warna Lembaran dibaca salah");

                        }

                        // Pembalikan warna lembaran gaya. Atur Penyorotan Warna Lapisan.

                        sumberDaya.Color = warnaLembaran[jumlahLayer - indeksLapisan - 1];

                        break;

                    }

                }

            }

        }

            string berkasSumber = "SemuaWarnaLclrResource.psd";

            string berkasKeluaran = "SemuaWarnaLclrResourceBalik.psd";

            // Dalam berkas warna penyorotan lapisan berada dalam urutan ini

            SheetColorHighlightEnum[] warnaLembaran = new SheetColorHighlightEnum[] {

                SheetColorHighlightEnum.Red,

                SheetColorHighlightEnum.Orange,

                SheetColorHighlightEnum.Yellow,

                SheetColorHighlightEnum.Green,

                SheetColorHighlightEnum.Blue,

                SheetColorHighlightEnum.Violet,

                SheetColorHighlightEnum.Gray,

                SheetColorHighlightEnum.NoColor

            };            

            // Warna Lembaran digunakan untuk menyoroti lapisan secara visual. 

            // Sebagai contoh Anda dapat memperbarui beberapa lapisan dalam PSD dan kemudian menyoroti warna lapisan yang ingin menarik perhatian.

            using (PsdImage img = (PsdImage)Image.Load(berkasSumber))

            {

                PeriksaWarnaLembaranDanBalik(warnaLembaran, img);

                img.Save(berkasKeluaran, new PsdOptions());

            }

            using (PsdImage img = (PsdImage)Image.Load(berkasKeluaran))

            {

                // Warna harus dibalik

                Array.Reverse(warnaLembaran);

                PeriksaWarnaLembaranDanBalik(warnaLembaran, img);

            }

PSDNET-563. Dukungan properti dari data LengthRecord. (Operasi jalur (operasi boolean), indeks bentuk dalam lapisan, jumlah catatan simpul bezier)

            string namaBerkas = "PathOperationsShape.psd";

            using (var im = (PsdImage)Image.Load(namaBerkas))

            {

                VsmsResource sumberDaya = null;

                foreach (var sumberDayaLapisan in im.Layers[1].Resources)

                {

                    if (sumberDayaLapisan is VsmsResource)

                    {

                        sumberDaya = (VsmsResource)sumberDayaLapisan;

                        break;

                    }

                }

                LengthRecord lengthRecord0 = (LengthRecord)sumberDaya.Paths[2];

                LengthRecord lengthRecord1 = (LengthRecord)sumberDaya.Paths[7];

                LengthRecord lengthRecord2 = (LengthRecord)sumberDaya.Paths[11];

                // Disini kita mengubah metode penggabungan antara bentuk.

                lengthRecord0.PathOperations = PathOperations.ExcludeOverlappingShapes;

                lengthRecord1.PathOperations = PathOperations.IntersectShapeAreas;

                lengthRecord2.PathOperations = PathOperations.SubtractFrontShape;

                im.Save("keluaran_" + namaBerkas);

            }

PSDNET-425. Dukungan untuk Warna Latar Belakang dari Sumber Daya Bagian Gambar #1010

             string berkasSumber = "input.psd";

            string berkasKeluaran = "output.psd";

            using (var gambar = (PsdImage)Image.Load(berkasSumber))

            {

                ResourceBlock[] sumberDayaGambar = gambar.ImageResources;

                BackgroundColorResource sumberDayaWarnaLatarBelakang = null;

                foreach (var sumberDayaGambarSatu in sumberDayaGambar)

                {

                    if (sumberDayaGambarSatu is BackgroundColorResource)

                    {

                        sumberDayaWarnaLatarBelakang = (BackgroundColorResource)sumberDayaGambarSatu;

                        break;

                    }

                }

                // memperbarui BackgroundColorResource

                sumberDayaWarnaLatarBelakang.Color = Color.DarkRed;

                gambar.Save(berkasKeluaran);

            }

PSDNET-530. Penambahan Layer Isi secara dinamis

             string psdKeluaran = "output.psd";

            using (var gambar = new PsdImage(100, 100))

            {

                FillLayer layerIsiWarna = FillLayer.CreateInstance(FillType.Color);

                layerIsiWarna.DisplayName = "Layer Isi Warna";

                gambar.AddLayer(layerIsiWarna);

                FillLayer layerIsiGradien = FillLayer.CreateInstance(FillType.Gradient);

                layerIsiGradien.DisplayName = "Layer Isi Gradien";

                gambar.AddLayer(layerIsiGradien);

                FillLayer layerIsiPola = FillLayer.CreateInstance(FillType.Pattern);

                layerIsiPola.DisplayName = "Layer Isi Pola";

                layerIsiPola.Opacity = 50;

                gambar.AddLayer(layerIsiPola);

                gambar.Save(psdKeluaran);

            }

PSDNET-424. Dukungan untuk Informasi Tepi dari Sumber Daya Bagian Gambar #1009

             string berkasSumber = "input.psd";

            string berkasKeluaran = "output.psd";

            using (var gambar = (PsdImage)Image.Load(berkasSumber))

            {

                ResourceBlock[] sumberDayaGambar = gambar.ImageResources;

                BorderInformationResource sumberDayaInfoTepi = null;

                foreach (var sumberDayaGambarSatu in sumberDayaGambar)

                {

                    if (sumberDayaGambarSatu is BorderInformationResource)

                    {

                        sumberDayaInfoTepi = (BorderInformationResource)sumberDayaGambarSatu;

                        break;

                    }

                }

                // memperbarui BorderInformationResource

                sumberDayaInfoTepi.Width = 0.1;

                sumberDayaInfoTepi.Unit = PhysicalUnit.Inches;

                gambar.Save(berkasKeluaran);

            }

PSDNET-592. Dukungan untuk Lapisan dalam File Format AI

         void PeriksaBenar(bool kondisi, string pesan)

        {

            if (!kondisi)

            {

                throw new FormatException(pesan);

            }

        }

        string namaBerkasSumber = "form_8_2l3_7.ai";

        string namaBerkasKeluaran = "form_8_2l3_7_ekspor";

        using (AiImage gambar = (AiImage)Image.Load(namaBerkasSumber))

        {

            AiLayerSection layer0 = gambar.Layers[0];

            PeriksaBenar(layer0 != null, "Layer 0 seharusnya tidak null.");

            PeriksaBenar(layer0.Name == "Layer 4", "Properti Nama dari layer 0 seharusnya adalah Layer 4");

            PeriksaBenar(!layer0.IsTemplate, "Properti IsTemplate dari layer 0 seharusnya false.");

            PeriksaBenar(layer0.IsLocked, "Properti IsLocked dari layer 0 seharusnya true.");

            PeriksaBenar(layer0.IsShown, "Properti IsShown dari layer 0 seharusnya true.");

            PeriksaBenar(layer0.IsPrinted, "Properti IsPrinted dari layer 0 seharusnya true.");

            PeriksaBenar(!layer0.IsPreview, "Properti IsPreview dari layer 0 seharusnya false.");

            PeriksaBenar