Catatan Rilis Aspose.PSD untuk .NET 20.6

Kunci Ringkasan Kategori
PSDNET-606 Dukungan untuk Sumber LnkE Fitur
PSDNET-386 Dukungan untuk britResource (Sumber dari Lapisan Penyesuaian Ke cerahan/Kontras) Fitur
PSDNET-219 Pindahkan pengaturan DefaultReplacementFont ke dalam kelas ImageOptionsBase Peningkatan
PSDNET-596 Grup Lapisan dengan Mode Perata Tidak Melewati Tampilan Bug
PSDNET-610 NullReference Exception saat mencoba mengonversi file Psd tertentu ke gambar Bug
PSDNET-636 Perubahan Ukuran berkas PSD tidak berfungsi dengan benar jika terdapat masker pada lapisan penyesuaian yang memiliki batas kosong Bug
PSDNET-611 OverflowException saat mencoba membuka file Psd tertentu Bug
PSDNET-565 Gambar Psd dengan mode RGB 16 bit/channel hanya memperbarui lapisan pada pratinjau Bug
PSDNET-652 Exception saat memuat file PSD tertentu dengan Sumber LnkE berkompaun dan properti adobeStockLicenseState Bug
PSDNET-640 Perubahan Masker Lapisan PSD diabaikan saat disimpan Bug
PSDNET-593 Menyimpan Berkas AI ke Format Jpeg2000 tidak berhasil Bug
PSDNET-638 Urutan Lapisan Tidak Benar setelah menambahkan Grup Lapisan ke Grup Lapisan kosong Bug

Perubahan API Publik

API Ditambahkan:

  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerMaskData.MaskRectangle
  • P:Aspose.PSD.ImageOptionsBase.DefaultReplacementFont
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.Type
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.UniqueId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.Version
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.OriginalFileName
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.FileType
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.FileCreator
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.ChildDocId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.AssetModTime
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.AssetLockedState
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.IsLibraryLink
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.CompId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.OriginalCompId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.HasFileOpenDescriptor
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource.Length
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSourceType
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSourceType.None
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSourceType.liFD
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSourceType.liFE
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSourceType.liFA
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.#ctor(System.Int32,System.Guid,System.String,System.String,System.String)
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.Date
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.FileSize
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.FileName
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.FullPath
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.RelativePath
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.ElementRef
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.ElementName
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.AdobeStockId
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFeDataSource.AdobeStockLicenseState
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFdDataSource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFdDataSource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LiFdDataSource.#ctor(System.Int32,System.Guid,System.String,System.String,System.String)
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.IsEmpty
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.PsdVersion
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.Signature
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.Length
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkResource.DataSourceCount
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lnk2Resource
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lnk2Resource.Key
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lnk2Resource.TypeToolKey
  • T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource.#ctor
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource.#ctor(Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LinkDataSource[])
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource.Key
  • F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource.TypeToolKey
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.LnkeResource.Item(System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.TypeToolInfoStructures.StringStructure.#ctor(Aspose.PSD.FileFormats.Psd.Layers.LayerResources.ClassID,System.String)

API Dihapus:

  • P:Aspose.PSD.ImageLoadOptions.PsdLoadOptions.DefaultReplacementFont

Contoh Penggunaan:

PSDNET-606. Dukungan untuk Sumber LnkE

 string pesan = "ExampleOfLnkEResourceSupport tidak bekerja dengan benar.";

void AssertIsTrue(bool kondisi)

{

    if (!kondisi)

    {

        throw new FormatException(pesan);

    }

}

void AssertAreEqual(object aktual, object diharapkan)

{

    if (!object.Equals(aktual, diharapkan))

    {

        throw new FormatException(pesan);

    }

}

// Contoh ini menunjukkan bagaimana cara mendapatkan dan mengatur properti dari Sumber LnkE Photoshop yang berisi informasi tentang sebuah berkas terkait eksternal.

void ExampleOfLnkEResourceSupport(

    string lokasiBerkas,

    int panjang,

    int panjang2,

    int panjang3,

    int panjang4,

    string fullPath,

    string date,

    double assetModTime,

    string childDocId,

    bool terkunci,

    string uid,

    string nama,

    string originalFileName,

    string fileType,

    long ukuran)

{

    string namaBerkas = Path.GetFileName(lokasiBerkas);

    string outputPath = @"Output\" + namaBerkas;

    using (PsdImage image = (PsdImage)Image.Load(lokasiBerkas))

    {

        LnkeResource lnkeResource = null;

        foreach (var sumber in image.GlobalLayerResources)

        {

            lnkeResource = sumber as LnkeResource;

            if (lnkeResource != null)

            {

                AssertAreEqual(lnkeResource.Length, panjang);

                AssertAreEqual(lnkeResource.UniqueId, new Guid(uid));

                AssertAreEqual(lnkeResource.FullPath, fullPath);

                AssertAreEqual(lnkeResource.Date.ToString(CultureInfo.InvariantCulture), date);

                AssertAreEqual(lnkeResource.AssetModTime, assetModTime);

                AssertAreEqual(lnkeResource.AssetLockedState, terkunci);

                AssertAreEqual(lnkeResource.FileName, nama);

                AssertAreEqual(lnkeResource.FileSize, ukuran);

                AssertAreEqual(lnkeResource.ChildDocId, childDocId);

                AssertAreEqual(lnkeResource.Version, 7);

                AssertAreEqual(lnkeResource.FileType, fileType);

                AssertAreEqual(lnkeResource.FileCreator, string.Empty);

                AssertAreEqual(lnkeResource.OriginalFileName, originalFileName);

                AssertAreEqual(lnkeResource.CompId, -1);

                AssertAreEqual(lnkeResource.OriginalCompId, -1);

                AssertIsTrue(lnkeResource.HasFileOpenDescriptor);

                AssertIsTrue(!lnkeResource.IsEmpty);

                AssertIsTrue(lnkeResource.Type == LinkResourceType.liFE);

                lnkeResource.FullPath =

                    @"file:///C:/Aspose/net/Aspose.Psd/test/testdata/Images/Psd/SmartObjects/rgb8_2x2.png";

                AssertAreEqual(lnkeResource.Length, panjang2);

                lnkeResource.FileName = "rgb8_2x23.png";

                AssertAreEqual(lnkeResource.Length, panjang3);

                lnkeResource.ChildDocId = Guid.NewGuid().ToString();

                AssertAreEqual(lnkeResource.Length, panjang4);

                lnkeResource.Date = DateTime.Now;

                lnkeResource.AssetModTime = double.MaxValue;

                lnkeResource.FileSize = long.MaxValue;

                lnkeResource.FileType = "test";

                lnkeResource.FileCreator = "file";

                lnkeResource.CompId = int.MaxValue;

                break;

            }

        }

        AssertIsTrue(lnkeResource != null);

        image.Save(outputPath, new PsdOptions(image));

    }

    using (PsdImage image = (PsdImage)Image.Load(outputPath))

    {

        image.Save(

            Path.ChangeExtension(outputPath, "png"),

            new PngOptions

            {

                ColorType = PngColorType.TruecolorWithAlpha

            });

    }

}

// Contoh ini menunjukkan bagaimana cara mendapatkan dan mengatur properti dari Sumber LnkE PSD yang berisi informasi tentang berkas JPEG terkait eksternal.

this.ExampleOfLnkEResourceSupport(

    @"..\..\..\Issues\IMAGINGNET-2375\photooverlay_5_new.psd",

    0x21c,

    0x26c,

    0x274,

    0x27c,

    @"file:///C:/Users/cvallejo/Desktop/photo.jpg",

    "05/09/2017 22:24:51",

    0,

    "F062B9DB73E8D124167A4186E54664B0",

    false,

    "02df245c-36a2-11e7-a9d8-fdb2b61f07a7",

    "photo.jpg",

    "photo.jpg",

    "JPEG",

    0x1520d);

// Contoh ini menunjukkan bagaimana cara mendapatkan dan mengatur properti dari Sumber LnkE PSD yang berisi informasi tentang berkas PNG terkait eksternal.

this.ExampleOfLnkEResourceSupport(

    "rgb8_2x2_linked.psd",

    0x284,

    0x290,

    0x294,

    0x2dc,

    @"file:///C:/Aspose/net/Aspose.Psd/test/testdata/Issues/PSDNET-491/rgb8_2x2.png",

    "04/14/2020 14:23:44",

    0,

    "",

    false,

    "5867318f-3174-9f41-abca-22f56a75247e",

    "rgb8_2x2.png",

    "rgb8_2x2.png",

    "png",

    0x53);

// Contoh ini menunjukkan bagaimana cara mendapatkan dan mengatur properti dari Sumber LnkE Photoshop yang berisi informasi tentang Aset Perpustakaan CC terkait eksternal.

this.ExampleOfLnkEResourceSupport(

    "rgb8_2x2_asset_linked.psd",

    0x398,

    0x38c,

    0x388,

    0x3d0,

    @"CC Libraries Asset “rgb8_2x2_linked/rgb8_2x2” (Fitur tersedia di Photoshop CC 2015)",

    "01/01/0001 00:00:00",

    1588890915488.0d,

    "",

    false,

    "ec15f0a8-7f13-a640-b928-7d29c6e9859c",

    "rgb8_2x2_linked",

    "rgb8_2x2.png",

    "png",

    0);

PSDNET-201. Dukungan untuk kemajuan konversi dokumen

 string lokasiBerkasSumber = "Apple.psd";

Stream outputStream = new MemoryStream();

ProgressEventHandler localProgressEventHandler = delegate(ProgressEventHandlerInfo infoKemajuan)

{

      string pesan = string.Format(

           "{0} {1}: {2} dari {3}",

           infoKemajuan.Description,

           infoKemajuan.EventType,

           infoKemajuan.Value,

           infoKemajuan.MaxValue);

      Console.WriteLine(pesan);

};

Console.WriteLine("---------- Memuat Apple.psd ----------");

var loadOptions = new PsdLoadOptions() { ProgressEventHandler = localProgressEventHandler };

using (PsdImage gambar = (PsdImage)Image.Load(lokasiBerkasSumber, loadOptions))

{

      Console.WriteLine("---------- Menyimpan Apple.psd ke format PNG ----------");

      gambar.Save(

           outputStream,

           new PngOptions()

           {

                 ColorType = PngColorType.Truecolor, ProgressEventHandler = localProgressEventHandler

           });

      Console.WriteLine("---------- Menyimpan Apple.psd ke format PSD ----------");

      gambar.Save(

           outputStream,

           new PsdOptions()

           {

                 ColorMode = ColorModes.Rgb,

                 ChannelsCount = 4,

                 ProgressEventHandler = localProgressEventHandler

           });

}

PSDNET-386. Dukungan untuk britResource (Sumber dari Lapisan Penyesuaian Ke cerahan/Kontras)

 /* Contoh ini menunjukkan bagaimana Anda dapat mengubah secara terprogramatik Sumber Lapisan Kearahan/Kontras PSD - BritResource

   Ini adalah API Aspose.PSD tingkat rendah. Anda dapat menggunakan Lapisan Kearahan/Kontras melalui API-nya, yang akan jauh lebih mudah, 

   tetapi pengeditan sumber langsung PhotoShop memberi Anda lebih banyak kontrol atas konten berkas PSD.  */

string jalur = @"BrightnessContrastPS6.psd";

string outputPath = @"BrightnessContrastPS6_output.psd";

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

{

    foreach (var lapisan in im.Layers)

    {

        if (lapisan is BrightnessContrastLayer)

        {

            foreach (var sumberLapisan in lapisan.Resources)

            {

                if (sumberLapisan is BritResource)

                {

                    var sumber = (BritResource)sumberLapisan;

                    isRequiredResourceFound = true;

                    if (sumber.Brightness != -40 ||

                        sumber.Contrast != 10 ||

                        sumber.LabColor != false ||

                        sumber.MeanValueForBrightnessAndContrast != 127)

                    {

                        throw new Exception("BritResource dibaca secara salah");

                    }

                    // Uji mengedit dan menyimpan

                    sumber.Brightness = 25;

                    sumber.Contrast = -14;

                    sumber.LabColor = true;

                    sumber.MeanValueForBrightnessAndContrast = 200;

                    im.Save(outputPath, new PsdOptions());

                    break;

                }

            }

        }

    }

}

PSDNET-596. Grup lapisan dengan Mode Tidak Melewati tidak Dirender

 string lokasiBerkasSumber = "MaskTestNormalBlendMaskOnGroup.psd";

string lokasiBerkasKeluaran = "MaskTestNormalBlendMaskOnGroup.png";

using (var input = (PsdImage)Image.Load(lokasiBerkasSumber))

{

    input.Save(lokasiBerkasKeluaran, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });

}

PSDNET-610. NullReference Exception saat mencoba mengonversi file Psd tertentu ke gambar

 using (var psdImage = (PsdImage)Image.Load