Aspose.PSD for .NET 23.3 - Sürüm Notları
Contents
[
Hide
]
Bu sayfa, Aspose.PSD for .NET 23.3 için sürüm notlarını içerir.
Anahtar | Özet | Kategori |
---|---|---|
PSDNET-146 | Posterize Düzenleme Katmanı Desteği | Özellik |
PSDNET-1366 | VscgResource Desteğinin Uygulanması | Özellik |
PSDNET-1437 | Posterize Düzenleme Katmanı Veri İçin PostResource Kaynağının Desteğinin Eklenmesi | Özellik |
PSDNET-931 | Curves ayarlaması ve CMYK renk moduyla katmanın PNG’ye yanlış dışa aktarımı | Hata |
PSDNET-1403 | Dosyanın kaydedilmesinden ve dosyanın PS tarafından güncelleştirilmesinden sonra Paragrafın Stili kayboluyor | Hata |
PSDNET-1453 | Metindeki ışıldama ve gölge efektlerinin bozulmuş render’ı | Hata |
Genel API Değişiklikleri
Eklenen API’ler:
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.Angle
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.PatternFillSettings.Angle
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.#ctor
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.Items
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.KeyForData
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.StrokeResources.VscgResource.TypeToolKey
Kaldırılan API’ler:
- Hiçbiri
Kullanım Örnekleri:
PSDNET-146. Posterize Düzenleme Katmanı Desteği
string kaynakDosya = "zendeya_posterize.psd";
string çıktıDosya = "zendeya_posterize_10.psd";
using (var görüntü = (PsdImage)Image.Load(kaynakDosya, new PsdLoadOptions()))
{
foreach (Layer katman in görüntü.Layers)
{
if (katman is PosterizeLayer)
{
((PosterizeLayer)katman).Levels = 10;
görüntü.Save(çıktıDosya);
break;
}
}
}
PSDNET-931. Curves ayarlaması ve CMYK renk moduyla katmanın PNG’ye yanlış dışa aktarımı
string srcFile = "input_LevelsLayerWithLayerMaskCmyk.psd";
string outputFile = "output_LevelsLayerWithLayerMaskCmykTest.png";
string outputFilePsd = "output.psd";
var psdLoadOptions = new PsdLoadOptions() { LoadEffectsResource = true };
using (PsdImage image = (PsdImage)Image.Load(srcFile, psdLoadOptions))
{
image.Save(outputFilePsd, new PsdOptions()); // the ', new PsdOptions()' provocating a bug.
image.Save(outputFile, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
PSDNET-1366. VscgResource Desteğinin Uygulanması
string kaynakDosya = "StrokeInternalFill_src.psd";
string çıktıDosya = "StrokeInternalFill_res.psd";
void AreEqual(double expected, double current, double tolerance = 0.1)
{
if (Math.Abs(expected - current) > tolerance)
{
throw new Exception(
$"Değerler eşit değil.\nBeklenen:{expected}\nSonuç:{current}\nFark:{expected - current}");
}
}
using (PsdImage görüntü = (PsdImage)Image.Load(kaynakDosya))
{
VscgResource vscgResource = (VscgResource)görüntü.Layers[1].Resources[0];
DescriptorStructure rgbColorStructure = (DescriptorStructure)vscgResource.Items[0];
AreEqual(89.8, ((DoubleStructure)rgbColorStructure.Structures[0]).Value);
AreEqual(219.6, ((DoubleStructure)rgbColorStructure.Structures[1]).Value);
AreEqual(34.2, ((DoubleStructure)rgbColorStructure.Structures[2]).Value);
((DoubleStructure)rgbColorStructure.Structures[0]).Value = 255d; // Kırmızı
((DoubleStructure)rgbColorStructure.Structures[1]).Value = 0d; // Yeşil
((DoubleStructure)rgbColorStructure.Structures[2]).Value = 0d; // Mavi
görüntü.Save(çıktıDosya);
}
// Değişiklikleri kontrol etme
using (PsdImage görüntü = (PsdImage)Image.Load(çıktıDosya))
{
VscgResource vscgResource = (VscgResource)görüntü.Layers[1].Resources[0];
DescriptorStructure rgbColorStructure = (DescriptorStructure)vscgResource.Items[0];
AreEqual(255, ((DoubleStructure)rgbColorStructure.Structures[0]).Value);
AreEqual(0, ((DoubleStructure)rgbColorStructure.Structures[1]).Value);
AreEqual(0, ((DoubleStructure)rgbColorStructure.Structures[2]).Value);
}
PSDNET-1403. Dosyanın kaydedilmesinden ve dosyanın PS tarafından güncelleştirilmesinden sonra Paragrafın Stili kayboluyor
string kaynakDosya = "PSDTest3.psd";
string çıktıDosya = "output.psd";
string[] yeniMetin = new string[]
{
"Başlık \r",
"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui dicta minus molestiae vel beatae natus"
};
using (PsdImage görüntü = (PsdImage)Aspose.PSD.Image.Load(kaynakDosya))
{
TextLayer katman2 = görüntü.AddTextLayer("Yeni katman", new Aspose.PSD.Rectangle(117, 150, 350, 100));
var metinVerisiTL = katman2.TextData;
ITextStyle varsayılanStilTL = metinVerisiTL.ProducePortion().Style;
ITextParagraph varsayılanParagrafTL = metinVerisiTL.ProducePortion().Paragraph;
ITextPortion[] yeniParçalarTL = metinVerisiTL.ProducePortions(yeniMetin, varsayılanStilTL, varsayılanParagrafTL);
yeniParçalarTL[0].Style.FontSize = 14;
yeniParçalarTL[0].Style.FontName = "TwCenMT-Bold";
yeniParçalarTL[1].Style.Leading = 20;
yeniParçalarTL[1].Style.FontSize = 10;
yeniParçalarTL[1].Style.FontName = "TwCenMT-Bold";
// Eski metni kaldırma
metinVerisiTL.RemovePortion(0);
// Yeni metin parçalarını ekleme
foreach (var yeniParça in yeniParçalarTL)
{
metinVerisiTL.AddPortion(yeniParça);
}
metinVerisiTL.UpdateLayerData();
görüntü.Save(çıktıDosya);
}
using (PsdImage psdGörüntü = (PsdImage)Aspose.PSD.Image.Load(çıktıDosya))
{
Txt2Resource txt2ÇıktıKaynak = (Txt2Resource)psdGörüntü.GlobalLayerResources[1];
byte[] baytlar = txt2ÇıktıKaynak.Data;
string txt2Veri = "";
for (int i = 18900; i < baytlar.Length; i++)
{
txt2Veri += (char)baytlar[i];
}
string anahtar0 = @" >> /6 0 >> >> /1 "; // paragraf 0'ın uzunluğuna ön ek
string anahtar1 = @" >> /6 1 >> >> /1 "; // paragraf 1'in uzunluğuna ön ek
int indeks0 = txt2Veri.IndexOf(anahtar0);
int indeks1 = txt2Veri.IndexOf(anahtar1);
string par0Uzunluk = txt2Veri.Substring(indeks0 + anahtar0.Length, 1);
string par1Uzunluk = txt2Veri.Substring(indeks1 + anahtar1.Length, 3);
string beklenen0 = yeniMetin[0].Length.ToString();
string beklenen1 = (yeniMetin[1].Length + 1).ToString();
if (par0Uzunluk != beklenen0 || par1Uzunluk != beklenen1)
{
throw new Exception(
$"Paragraf uzunlukları yanlış.\nBeklenen: {beklenen0} ve {beklenen1}\nSonuç: {par0Uzunluk} ve {par1Uzunluk}\n");
}
}
PSDNET-1437. Posterize Düzenleme Katmanı Veri İçin PostResource Kaynağının Desteğinin Eklenmesi
string kaynakDosya = "zendeya_posterize.psd";
string çıktıDosya = "zendeya_posterize_10.psd";
using (var görüntü = (PsdImage)Image.Load(kaynakDosya, new PsdLoadOptions()))
{
Layer katman = görüntü.Layers[1];
foreach (LayerResource kaynak in katman.Resources)
{
if (kaynak is PostResource)
{
((PostResource)kaynak).Levels = 10;
görüntü.Save(çıktıDosya);
break;
}
}
}
PSDNET-1453. Metindeki ışıldama ve gölge efektlerinin bozulmuş render’ı
string çıktıPsd = "effect_bug.psd";
string çıktıPng = "effect_bug.png";
using (var psdGörüntü = new PsdImage(500, 500))
{
// Metin katmanları ekleyin
Aspose.PSD.Rectangle metinAlan1 = new Aspose.PSD.Rectangle(50, 0, 400, 100);
Aspose.PSD.Rectangle metinAlan2 = new Aspose.PSD.Rectangle(50, 150, 400, 100);
Aspose.PSD.Rectangle metinAlan3 = new Aspose.PSD.Rectangle(50, 300, 400, 100);
TextLayer metinKatmanı1 = psdGörüntü.AddTextLayer("Efektli Metin", metinAlan1);
TextLayer metinKatmanı2 = psdGörüntü.AddTextLayer("Efektli Metin", metinAlan2);
TextLayer metinKatmanı3 = psdGörüntü.AddTextLayer("Efektli Metin", metinAlan3);
// Metin katmanlarını değiştirin
metinKatmanı1.TextData.Items[0].Style.FontSize = 150;
metinKatmanı1.TextData.Items[0].Style.FillColor = Aspose.PSD.Color.Goldenrod;
metinKatmanı1.TextData.UpdateLayerData();
metinKatmanı2.TextData.Items[0].Style.FontSize = 150;
metinKatmanı2.TextData.Items[0].Style.FillColor = Aspose.PSD.Color.Goldenrod;
metinKatmanı2.TextData.UpdateLayerData();
metinKatmanı3.TextData.Items[0].Style.FontSize = 150;
metinKatmanı3.TextData.Items[0].Style.FillColor = Aspose.PSD.Color.Goldenrod;
metinKatmanı3.TextData.UpdateLayerData();
// Efektler ekleyin
OuterGlowEffect ışıltı = metinKatmanı1.BlendingOptions.AddOuterGlow(); // kırılma
ışıltı.Spread = 15;
((ColorFillSettings)ışıltı.FillColor).Color = Color.Red;
var gölge = metinKatmanı2.BlendingOptions.AddDropShadow(); // uzun metin ile kırılır
gölge.Distance = 25;
gölge.Color = Color.DarkBlue;
var içGölge = metinKatmanı3.BlendingOptions.AddInnerShadow(); // uzun metin ile kırılır
içGölge.UseGlobalLight = false;
içGölge.Angle = -179;
içGölge.Distance = 10;
içGölge.Size = 8;
içGölge.Color = Color.HotPink;
// dışa aktar
psdGörüntü.Save(çıktıPsd);
psdGörüntü.Save(çıktıPng, new PngOptions() { ColorType = Aspose.PSD.FileFormats.Png.PngColorType.TruecolorWithAlpha });
}