Aspose.PSD for .NET 19.9 - Sürüm Notları

Anahtar Özet Kategori
PSDNET-160 Çıkarılan yanlış katman adı Özellik
PSDNET-175 PSD TextLayer içinde farklı bir metin bölgesinden metin özelliklerinin alınması Özellik
PSDNET-190 Katman grubu ekleme desteği Özellik
PSDNET-192 Derece Dolgu Katmanı için Ölçek Özelliği Desteği Özellik
PSDNET-162 Parlaklığı Ayarlama Geliştirme
PSDNET-174 PSD görüntüsünü JPEG olarak kaydederken IndexOutOfRangeException Hata
PSDNET-180 Metin katmanı metnini güncelleme hata fırlatıyor Hata
PSDNET-182 RotateFlip işleminden sonra PSD görüntüsünün kaydedilmesi, açılamayan bozuk bir dosya oluşturur Hata

Genel API Değişiklikleri

Eklenen API’ler:

  • M:Aspose.PSD.FileFormats.Psd.Layers.LayerGroup.AddLayerGroup(System.String,System.Int32)
  • T:Aspose.PSD.FileFormats.Psd.Layers.Text.IText
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.Items
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.Text
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.ProducePortion
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.AddPortion(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.InsertPortion(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion,System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.RemovePortion(System.Int32)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.IText.UpdateLayerData
  • T:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.Justification
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.FirstLineIndent
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.StartIndent
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.EndIndent
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.SpaceBefore
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.SpaceAfter
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.AutoHyphenate
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.HyphenatedWordSize
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.PreHyphen
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.PostHyphen
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.ConsecutiveHyphens
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.Zone
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.WordSpacing
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.LetterSpacing
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.GlyphSpacing
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.AutoLeading
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.LeadingType
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.Hanging
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.Burasagari
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.KinsokuOrder
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.EveryLineComposer
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.Apply(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph.IsEqual(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextParagraph)
  • T:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion.Text
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion.Style
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextPortion.Paragraph
  • T:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.FontSize
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.AutoLeading
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.Leading
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.Tracking
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.Kerning
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.FillColor
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.StrokeColor
  • P:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.HindiNumbers
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.Apply(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle.IsEqual(Aspose.PSD.FileFormats.Psd.Layers.Text.ITextStyle)
  • P:Aspose.PSD.FileFormats.Psd.Layers.TextLayer.TextData
  • P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IGradientFillSettings.Scale
  • P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.GdFlResource.Scale
  • P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.GradientFillSettings.Scale

Kaldırılan API’ler:

  • Hiçbiri

Kullanım örnekleri:

PSDNET-160. Yanlış katman adı çıkarıldı

Katman adını doğru bir şekilde görüntülemek için DisplayName özelliğini kullanın. Bu özelliğe artık bir setter eklendi ve özellik değiştirilebilir hale geldi. Photoshop, Kore karakterlerini ASCII içinde byte 63' ‘?’ olarak sakladığında, ad özelliğini kullanarak katman adının kaydedilmesi durumunda. Kore karakterlerini desteklemediği için DisplayName özelliğini kullanın.

             // katman adlarında değişiklikler yapın ve kaydedin

            using (var görüntü = (PsdImage)Image.Load("adları olan katmanlar.psd"))

            {

                for (int i = 0; i < görüntü.Katmanlar.Uzunluk; i++)

                {

                    var katman = görüntü.Katmanlar[i];

                    // DisplayName özelliğine yeni değer atayın

                    katman.DisplayName += "_değiştirildi";

                }

                görüntü.Kaydet("çıktı.psd");

            }

PSDNET-175. PSD TextLayer içinde farklı bir metin bölgesinden metin özelliklerinin alınması

            const double Tolerans = 0.0001;

            var dosyaYolu = "ThreeColorsParagraphs.psd";

            var çıktıYolu = "ThreeColorsParagraph_out.psd";

            using (var görüntü = (PsdImage)Image.Load(dosyaYolu))

            {

                for (int i = 0; i < görüntü.Katmanlar.Uzunluk; i++) 

                {

                    var katman = görüntü.Katmanlar[i] olarak TextLayer;

                    if (katman != null)

                    {

                        var kısımlar = katman.TextData.Items;

                        if (kısımlar.Uzunluk != 4)

                        {

                            throw new Exception();

                        }

                        // Her parçanın metninin kontrol edilmesi

                        if (kısımlar[0].Text != "Eski " ||

                            kısımlar[1].Text != "renk" ||

                            kısımlar[2].Text != " metin\r" ||

                            kısımlar[3].Text != "İkinci paragraf\r")

                        {

                            throw new Exception();

                        }

                        // Paragrafların verilerinin kontrol edilmesi

                        // Paragraflar farklı hizalamalara sahip

                        if (

                            kısımlar[0].Paragraph.Justification != 0 ||

                            kısımlar[1].Paragraph.Justification != 0 ||

                            kısımlar[2].Paragraph.Justification != 0 ||

                            kısımlar[3].Paragraph.Justification != 2)

                        {

                            throw new Exception();

                        }

                        // İlk ve ikinci paragrafın diğer tüm özellikleri eşit

                        for (int j = 0; j < kısımlar.Uzunluk; j++)

                        {

                            var paragraf = kısımlar[j].Paragraph;

                            if (Math.Abs(paragraf.AutoLeading - 1.2) > Tolerans ||

                                 paragraf.AutoHyphenate != false ||

                                 paragraf.Burasagari != false ||

                                 paragraf.ConsecutiveHyphens != 8 ||

                                 Math.Abs(paragraf.StartIndent) > Tolerans ||

                                 Math.Abs(paragraf.EndIndent) > Tolerans ||

                                 paragraf.EveryLineComposer != false ||

                                 Math.Abs(paragraf.FirstLineIndent) > Tolerans ||

                                 paragraf.GlyphSpacing.Uzunluk != 3 ||

                                 Math.Abs(paragraf.GlyphSpacing[0] - 1) > Tolerans ||

                                 Math.Abs(paragraf.GlyphSpacing[1] - 1) > Tolerans ||

                                 Math.Abs(paragraf.GlyphSpacing[2] - 1) > Tolerans ||

                                 paragraf.Hanging != false ||

                                 paragraf.HyphenatedWordSize != 6 ||

                                 paragraf.KinsokuOrder != 0 ||

                                 paragraf.LetterSpacing.Uzunluk != 3 ||

                                 Math.Abs(paragraf.LetterSpacing[0]) > Tolerans ||

                                 Math.Abs(paragraf.LetterSpacing[1]) > Tolerans ||

                                 Math.Abs(paragraf.LetterSpacing[2]) > Tolerans ||

                                 paragraf.LeadingType != LeadingMode.Auto ||

                                 paragraf.PreHyphen != 2 ||

                                 paragraf.PostHyphen != 2 ||

                                 Math.Abs(paragraf.SpaceBefore) > Tolerance ||

                                 Math.Abs(paragraf.SpaceAfter) > Tolerance ||

                                 paragraf.WordSpacing.Uzunluk != 3 ||

                                 Math.Abs(paragraf.WordSpacing[0] - 0.8) > Tolerance ||

                                 Math.Abs(paragraf.WordSpacing[1] - 1.0) > Tolerance ||

                                 Math.Abs(paragraf.WordSpacing[2] - 1.33) > Tolerance ||

                                 Math.Abs(paragraf.Zone - 36.0) > Tolerance)

                            {

                                throw new Exception();

                            }

                        }

                         // Stil verilerinin kontrol edilmesi

                         // Stiller farklı renklere ve font boyutlarına sahip

                         if (Math.Abs(kısımlar[0].Style.FontSize - 12) > Tolerans ||

                             Math.Abs(kısımlar[1].Style.FontSize - 12) > Tolerans ||

                             Math.Abs(kısımlar[2].Style.FontSize - 12) > Tolerance ||

                             Math.Abs(kısımlar[3].Style.FontSize - 10) > Tolerance)

                         {

                             throw new Exception();

                         }

                         if (kısımlar[0].Style.FillColor != Color.FromArgb(255, 145, 0, 0) ||

                             kısımlar[1].Style.FillColor != Color.FromArgb(255, 201, 128, 2) ||

                             kısımlar[2].Style.FillColor != Color.FromArgb(255, 18, 143, 4) ||

                             kısımlar[3].Style.FillColor != Color.FromArgb(255, 145, 42, 100))

                         {

                             throw new Exception();

                         }

                         for (int j = 0; j < kısımlar.Uzunluk; j++) 

                         {

                             var stil = kısımlar[j].Style;

                             if (stil.AutoLeading != false ||

                                 stil.HindiNumbers != false ||

                                 stil.Kerning != 0 ||

                                 stil.Leading != 0 ||

                                 stil.StrokeColor != Color.FromArgb(255, 175, 90, 163) ||

                                 stil.Tracking != 50)

                             {

                                 throw new Exception();

                             }

                        }

                         // Metin düzenleme örneği

                         kısımlar[0].Text = "Merhaba ";

                         kısımlar[1].Text = "Dünya";

                         // Metin parçalarının çıkarılması örneği

                         katman.TextData.RemovePortion(3);

                         katman.TextData.RemovePortion(2);

                         // Yeni metin parçası ekleme örneği

                         var oluşturulanParça = katman.TextData.ProducePortion();

                         oluşturulanParça.Text = "!!!\r";

                         katman.TextData.AddPortion(oluşturulanParça);

                         kısımlar = katman.TextData.Items;

                         // Parçalar için paragraf ve stil düzenleme örneği

                         // Doğru hizalamayı ayarlayın

                         kısımlar[0].Paragraph.Justification = 1;

                         kısımlar[1].Paragraph.Justification = 1;

                         kısımlar[2].Paragraph.Justification = 1;

                         // Her stil için farklı renkler. Değişecek, ancak render tam olarak desteklenmiyor

                         kısımlar[0].Style.FillColor = Color.Aquamarine;

                         kısımlar[1].Style.FillColor = Color.Violet;

                         kısımlar[2].Style.FillColor = Color.LightBlue;

                         // Farklı font. Değişecek, ancak render tam olarak desteklenmiyor

                         kısımlar[0].Style.FontSize = 6;

                         kısımlar[1].Style.FontSize = 8;

                         kısımlar[2].Style.FontSize = 10;

                         katman.TextData.UpdateLayerData();

                         görüntü.Save(çıktıYolu, new PsdOptions(görüntü));

                         break;

                    }

                }

            }

PSDNET-190. Katman grubu ekleme desteği

             // -Grup 1

             // --Katman 1

             // --Grup 2

             // ---Katman 2

             // ---Katman 3

             // --Katman 4

             string veriDizini = "psdnet190_test.psd";

             var oluşturSeçenekler = new PsdOptions();

             oluşturSeçenekler.Source = new FileCreateSource(veriDizini, false);

             oluşturSeçenekler.Palette = new PsdColorPalette(new Color[] { Color.Green });

             using (var psdGörüntü = (PsdImage)Image.Create(oluşturSeçenekler, 500, 500))

             {

                 LayerGroup grup1 = psdGörüntü.AddLayerGroup("Grup 1", 0, true);

                 Layer katman1 = new Layer(psdGörüntü);

                 katman1.Name = "Katman 1";

                 grup1.AddLayer(katman1);

                 LayerGroup grup2 = grup1.AddLayerGroup("Grup 2", 1);

                 Layer katman2 = new Layer(psdGörüntü);

                 katman2.Name = "Katman 2";

                 grup2.AddLayer(katman2);

                 Layer katman3 = new Layer(psdGörüntü);

                 katman3.Name = "Katman 3";

                 grup2.AddLayer(katman3);

                 Layer katman4 = new Layer(psdGörüntü);

                 katman4.Name = "Katman 4";

                 grup1.AddLayer(katman4);

                 psdGörüntü.Save();

             }

PSDNET-192. Derece Dolgu Katmanı için Ölçek Özelliği Desteği

             using (var image = (PsdImage)Image.Load("Fill