Aspose.PSD voor .NET 24.4 - Releasenotities
Contents
[
Hide
]
Deze pagina bevat releasenotities voor Aspose.PSD voor .NET 24.4
Key | Samenvatting | Categorie |
---|---|---|
PSDNET-1871 | [AI-formaat] Toevoegen van XObjectForm-bronverwerking | Functie |
PSDNET-1961 | Toevoegen van Constructor voor de ShapeLayer | Functie |
PSDNET-1879 | Oplossing voor conversie van Psd-bestand van RGB naar CMYK | Fout |
PSDNET-1966 | Specifiek PSD-bestand kan niet geëxporteerd worden met Aspose.PSD | Fout |
Wijzigingen in openbare API
Toegevoegde API’s:
- M:Aspose.PSD.FileFormats.Psd.PsdImage.AddShapeLayer
Verwijderde API’s:
- Geen
Gebruik voorbeelden:
PSDNET-1871. [AI-formaat] Toevoegen van XObjectForm-bronverwerking
string bronbestand = Path.Combine(basisMap, "voorbeeld.ai");
string uitvoerBestandPad = Path.Combine(uitvoerMap, "voorbeeld.png");
using (AiImage afbeelding = (AiImage)Image.Load(bronbestand))
{
afbeelding.Save(uitvoerBestandPad, new PngOptions());
}
PSDNET-1879. Oplossing voor conversie van Psd-bestand van RGB naar CMYK
// Controleer of psd-bestand geconverteerd naar CMYK + RLE 4 kanalen van psd-bestand in RGB + RLE 4 kanalen, echt 4 kanalen heeft
// en HasTransparencyData == false.
string bronbestand = Path.Combine(basisMap, "frog_nosymb.psd");
string uitvoerBestand = Path.Combine(uitvoerMap, "frog_nosymb_output.psd");
using (PsdImage psdAfbeelding = (PsdImage)Image.Load(bronbestand))
{
psdAfbeelding.HasTransparencyData = false;
PsdOptions psdOpties = new PsdOptions(psdAfbeelding)
{
ColorMode = ColorModes.Cmyk,
CompressionMethod = CompressionMethod.RLE,
ChannelsCount = 4,
};
psdAfbeelding.Save(uitvoerBestand, psdOpties);
}
using (PsdImage psdAfbeelding = (PsdImage)Image.Load(uitvoerBestand))
{
AssertAreEqual(false, psdAfbeelding.HasTransparencyData);
AssertAreEqual((ushort)4, psdAfbeelding.Layers[0].ChannelsCount);
}
void AssertAreEqual(object verwacht, object daadwerkelijk, string bericht = null)
{
if (!object.Equals(verwacht, daadwerkelijk))
{
throw new Exception(bericht ?? "Objecten zijn niet gelijk.");
}
}
PSDNET-1961. Toevoegen van Constructor voor de ShapeLayer
string uitvoerBestand = Path.Combine(uitvoerMap, "AddShapeLayer_output.psd");
const int ImgToPsdRatio = 256 * 65535;
using (PsdImage nieuwPsd = new PsdImage(600, 400))
{
ShapeLayer laag = nieuwPsd.AddShapeLayer();
var nieuweVorm = GenereerNieuweVorm(nieuwPsd.Size);
List<IPathShape> nieuweVormen = new List<IPathShape>();
nieuweVormen.Add(nieuweVorm);
laag.Path.SetItems(nieuweVormen.ToArray());
laag.Update();
nieuwPsd.Save(uitvoerBestand);
}
using (PsdImage afbeelding = (PsdImage)Image.Load(uitvoerBestand))
{
AssertAreEqual(2, afbeelding.Layers.Length);
ShapeLayer vormLaag = afbeelding.Layers[1] as ShapeLayer;
ColorFillSettings interneVulling = vormLaag.Fill as ColorFillSettings;
IStrokeSettings lijnstijlInstellingen = vormLaag.Stroke;
ColorFillSettings lijnstijlVulling = vormLaag.Stroke.Fill as ColorFillSettings;
AssertAreEqual(1, vormLaag.Path.GetItems().Length); // 1 Vorm
AssertAreEqual(3, vormLaag.Path.GetItems()[0].GetItems().Length); // 3 knopen in een vorm
AssertAreEqual(-16127182, interneVulling.Color.ToArgb()); // ff09eb32
AssertAreEqual(7.41, lijnstijlInstellingen.Size);
AssertAreEqual(false, lijnstijlInstellingen.Enabled);
AssertAreEqual(StrokePosition.Center, lijnstijlInstellingen.LineAlignment);
AssertAreEqual(LineCapType.ButtCap, lijnstijlInstellingen.LineCap);
AssertAreEqual(LineJoinType.MiterJoin, lijnstijlInstellingen.LineJoin);
AssertAreEqual(-16777216, lijnstijlVulling.Color.ToArgb()); // ff000000
}
PathShape GenereerNieuweVorm(Size afbeeldingsgrootte)
{
var nieuweVorm = new PathShape();
PointF punt1 = new PointF(20, 100);
PointF punt2 = new PointF(200, 100);
PointF punt3 = new PointF(300, 10);
BezierKnotRecord[] BezierKnopen = new BezierKnotRecord[]
{
new BezierKnotRecord()
{
IsLinked = true,
Points = new Point[3]
{
PointFToResourcePoint(punt1, afbeeldingsgrootte),
PointFToResourcePoint(punt1, afbeeldingsgrootte),
PointFToResourcePoint(punt1, afbeeldingsgrootte),
}
},
new BezierKnotRecord()
{
IsLinked = true,
Points = new Point[3]
{
PointFToResourcePoint(punt2, afbeeldingsgrootte),
PointFToResourcePoint(punt2, afbeeldingsgrootte),
PointFToResourcePoint(punt2, afbeeldingsgrootte),
}
},
new BezierKnotRecord()
{
IsLinked = true,
Points = new Point[3]
{
PointFToResourcePoint(punt3, afbeeldingsgrootte),
PointFToResourcePoint(punt3, afbeeldingsgrootte),
PointFToResourcePoint(punt3, afbeeldingsgrootte),
}
},
};
nieuweVorm.SetItems(BezierKnopen);
return nieuweVorm;
}
Point PointFToResourcePoint(PointF punt, Size afbeeldingsgrootte)
{
return new Point(
(int)Math.Round(punt.Y * (ImgToPsdRatio / afbeeldingsgrootte.Height)),
(int)Math.Round(punt.X * (ImgToPsdRatio / afbeeldingsgrootte.Width)));
}
void AssertAreEqual(object verwacht, object daadwerkelijk, string bericht = null)
{
if (!object.Equals(verwacht, daadwerkelijk))
{
throw new Exception(bericht ?? "Objecten zijn niet gelijk.");
}
}
PSDNET-1966. Specifiek PSD-bestand kan niet geëxporteerd worden met Aspose.PSD
string bronbestand = Path.Combine(basisMap, "1966source.psd");
string uitvoerPng = Path.Combine(uitvoerMap, "output.png");
using (var psdAfbeelding = (PsdAfbeelding)Image.Load(bronbestand, new PsdLoadOptions() { LoadEffectsResource = true }))
{
psdAfbeelding.Save(uitvoerPng, new PngOptions());
}