Aspose.PSD voor .NET 23.7 - Release-opmerkingen
Sleutel | Samenvatting | Categorie |
---|---|---|
PSDNET-802 | Mogelijkheid toegevoegd om elke laag van PSD-bestand te exporteren naar geanimeerd Gif-bestand | Functie |
PSDNET-1441 | Toewijzen van Vullingseigenschap van vormlaag uit vscg-bron | Functie |
PSDNET-1534 | Toevoegen van nieuwe warp-types (boog & boog) | Functie |
PSDNET-1543 | Verander de toepassing die het PSD-bestand opslaat naar Aspose.PSD als UpdateMetadata-eigenschap is ingesteld op true | Functie |
PSDNET-1567 | Vergroten van het berekeningsgebied van het warp-beeld | Functie |
PSDNET-1471 | Aanpassingslaag Zwart en wit verwerkt semi-transparantie verkeerd | Fout |
PSDNET-1505 | SmartObject ReplaceContents (wanneer de optie AllowWarpRepaint actief is) valt na 2 minuten berekenen | Fout |
PSDNET-1585 | Mogelijkheid toegevoegd om de echte positie van LayerGroup links en bovenaan te verkrijgen | Fout |
PSDNET-1589 | Formaat van de laag werkt verkeerd wanneer psd-bestand VogkResource heeft met structuren in punten | Fout |
PSDNET-1608 | TextBound werkt niet zoals verwacht | Fout |
PSDNET-1612 | Toevoegen van een laag gemaakt met standaardconstructor naar PSD-beeld voegt geen standaardresources eraan toe | Fout |
PSDNET-1623 | Timeline.LoopesCount wordt genegeerd bij exporteren naar geanimeerd GIF | Fout |
Wijzigingen in de openbare API
Toegevoegde API’s:
- P:Aspose.PSD.ImageOptions.PsdOptions.UpdateMetadata
- F:Aspose.PSD.FileFormats.Ai.AiFormatVersion.Pdf16
- F:Aspose.PSD.FileFormats.Ai.AiFormatVersion.Pdf17
- P:Aspose.PSD.Xmp.Schemas.XmpBaseSchema.XmpBasicPackage.Item(System.String)
- M:Aspose.PSD.Xmp.Schemas.XmpBaseSchema.XmpBasicPackage.SetValue(System.String,Aspose.PSD.Xmp.IXmlValue)
- M:Aspose.PSD.Xmp.Schemas.XmpBaseSchema.XmpBasicPackage.ContainsKey(System.String)
- P:Aspose.PSD.FileFormats.Psd.Layers.ShapeLayer.Fill
Verwijderde API’s:
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPath.FillColor
Gebruik voorbeelden:
PSDNET-802. Mogelijkheid toegevoegd om elke laag van PSD-bestand te exporteren naar geanimeerd GIF-bestand
string src = "ElkeLaagIsFrame.psd";
string outputGif = "uit_ElkeLaagIsFrame.gif";
string outputPsd = "uit_ElkeLaagIsFrame.psd";
using (var psdImage = (PsdImage)Image.Load(src))
{
// Frames maken voor elke laag.
int framesTellen = psdImage.Layers.Length;
var tijdlijn = psdImage.Tijdlijn;
Frame[] frames = nieuwe Frame[framesTellen];
for (int i = 0; i < framesTellen; i++)
{
frames[i] = nieuwe Frame();
LayerState[] laagStatens = nieuwe LayerState[framesTellen];
for (int j = 0; j < framesTellen; j++)
{
laagStatens[j] = nieuwe LayerState();
laagStatens[j].Ingeschakeld = i == j;
}
frames[i].LayerStates = laagStatens;
}
tijdlijn.Frames = frames;
// Huidige staten bijwerken
Layer[] lagen = psdImage.Lagen;
LayerState[] staten = tijdlijn.Frames[tijdlijn.ActiefFrameIndex].LaagStatens;
voor (int i = 0; i < framesTellen; i++)
{
lagen[i].IsZichtbaar = staten[i].Ingeschakeld;
}
tijdlijn.Save(outputGif, nieuwe GifOpties());
psdImage.Save(outputPsd);
}
PSDNET-1441. Toewijzen van Vullingseigenschap van vormlaag uit vscg-bron
string srcBestand = "ShapeInternalSolid.psd";
string uitBestand = "ShapeInternalSolid.psd.uit.psd";
using (PsdImage afbeelding = (PsdImage)Image.Load(
srcBestand,
nieuwe PsdLaadOpties { LaadEffectenBron = true }))
{
ShapeLayer vormLaag = (ShapeLayer)afbeelding.Lagen[1];
ColorFillSettings vullingInstellingen = (ColorFillSettings)vormLaag.Vulling;
vullingInstellingen.Kleur = Color.Rood;
vormLaag.Update();
afbeelding.Save(uitBestand);
}
// Controleer opgeslagen wijzigingen
gebruik (PsdAfbeelding afbeelding = (PsdAfbeelding)Image.Load(
uitBestand,
nieuwe PsdLaadOpties { LaadEffectenBron = true }))
{
ShapeLayer vormLaag = (ShapeLayer)afbeelding.Lagen[1];
ColorFillSettings vullingInstellingen = (ColorFillSettings)vormLaag.Vulling;
AssertGelijk(Color.Rood, vullingInstellingen.Kleur);
afbeelding.Save(uitBestand);
}
void AssertGelijk(object verwacht, object werkelijk, string bericht = null)
{
if (!object.Equals(verwacht, werkelijk))
{
throw nieuwe Exception(bericht ?? "Objecten zijn niet gelijk.");
}
}
PSDNET-1471. Aanpassingslaag Zwart en wit verwerkt semi-transparantie verkeerd
string srcBestand = "kikker_nosymb.psd";
string uitBestand = "kikker_nosymb.psd.uit.psd";
using (PsdAfbeelding psdAfbeelding = (PsdAfbeelding)Image.Load(srcBestand))
{
psdAfbeelding.AddBlackWhiteAdjustmentLayer();
psdAfbeelding.Save(uitBestand);
}
// Controleer opgeslagen wijzigingen
gebruik (PsdAfbeelding afbeelding = (PsdAfbeelding)Image.Load(
uitBestand,
nieuwe PsdLaadOpties { LaadEffectenBron = true }))
{
AssertGelijk(2, afbeelding.Lagen.Lengte);
BlackWhiteAdjustmentLayer zwartWitAanpassingslaag = (BlackWhiteAdjustmentLayer)afbeelding.Lagen[1];
als (zwartWitAanpassingslaag == null)
{
throw nieuwe Exception("Laag 2 moet BlackWhiteAdjustmentLayer zijn");
}
afbeelding.Save(uitBestand);
}
void AssertGelijk(object verwacht, object werkelijk, string bericht = null)
{
if (!object.Equals(verwacht, werkelijk))
{
throw nieuwe Exception(bericht ?? "Objecten zijn niet gelijk.");
}
}
PSDNET-1505. SmartObject ReplaceContents (wanneer de optie AllowWarpRepaint actief is) valt na 2 minuten berekenen
string bronBestand = "mok 4.psd";
string wijzigingsbestand = "kunstwerk voor vervanging.png";
string uitvoerBestand = "export.png";
int nieuweHoogte = 300;
gebruik (var psdAfbeelding = (PsdAfbeelding)Image.Load(bronBestand, nieuwe PsdLaadOpties() { ToestaanWarpRepaint = true, LaadEffectenBron = true }))
{
SmartObjectLayer slimObjectLaag = (SmartObjectLayer)psdAfbeelding.Lagen[3];
var schaal = (double)nieuweHoogte / slimObjectLaag.Hoogte;
var nieuweBreedte = (int)Math.Round(slimObjectLaag.Breedte * schaal);
PsdAfbeelding binnenAfbeelding = nieuwe PsdAfbeelding(nieuweBreedte, nieuweHoogte);
binnenAfbeelding.SetResolutie(72, 72);
Stream binnenStroom = nieuwe FileStream(wijzigingsbestand, FileMode.Open);
Laag laag = nieuwe Laag(binnenStroom) { HorizontaleResolutie = 72, VerticaleResolutie = 72 };
probeer
{
binnenAfbeelding.AddLayer(laag);
slimObjectLaag.ReplaceContents(binnenAfbeelding);
slimObjectLaag.UpdateGewijzigdeInhoud();
psdAfbeelding.Save(uitvoerBestand, nieuwe PngOpties
{
Kleurtype = PngKleurtype.WerkelijkeKleurMetAlfa
});
}
eindelijk
{
binnenAfbeelding.Dispose();
binnenStroom.Dispose();
laag.Dispose();
}
}
PSDNET-1534. Toevoegen van nieuwe warp-types (boog & boog)
string bronArcBestand = "boog_warp.psd";
string uitvoerArcBestand = "boog_export.png";
string bronArchBestand = "arch_warp.psd";
string uitvoerArchBestand = "arch_export.png";
gebruik (var psdAfbeelding = (PsdAfbeelding)Image.Load(bronArcBestand, nieuwe PsdLaadOpties() { ToestaanWarpRepaint = true, LaadEffectenBron = true }))
{
psdAfbeelding.Save(uitvoerArcBestand, nieuwe PngOpties
{
Kleurtype = PngKleurtype.WerkelijkeKleurMetAlfa
});
}
gebruik (var psdAfbeelding = (PsdAfbeelding)Image.Load(bronArchBestand, nieuwe PsdLaadOpties() { ToestaanWarpRepaint = true, LaadEffectenBron = true }))
{
psdAfbeelding.Save(uitvoerArchBestand, nieuwe PngOpties
{
Kleurtype = PngKleurtype.WerkelijkeKleurMetAlfa
});
}
PSDNET-1543. Verander de toepassing die het PSD-bestand opslaat naar Aspose.PSD als UpdateMetadata-eigenschap is ingesteld op true
string pad = "uitvoer.psd";
gebruik (var afbeelding = nieuwe PsdAfbeelding(100, 100))
{
// Als je wilt dat de makerstool verandert, zorg ervoor dat de eigenschap "UpdateMetadata" is ingesteld op true. Standaard staat deze op true.
var psdOpties = nieuwe PsdOpties();
psdOpties.UpdateMetadata = true;
// Afbeelding opslaan.
afbeelding.Save(pad, psdOpties);
// Makerstool controleren in code.
var xmpGegevens = afbeelding.XmpGegevens;
var basisPakket = afbeelding.XmpGegevens.PakketOphalen(Namespaces.XmpBasic);
// Hier zal de bijgewerkte makerstoolinfo zijn.
var huidigeMakerstool = (string)basisPakket[":CreatorTool"];
}
PSDNET-1567. Vergroten van het berekeningsgebied van het warp-beeld
string bronBestand = "mok4_warp.psd";
string uitvoerBestand = "mok4_export.png";
gebruik (var psdAfbeelding = (PsdAfbeelding)Image.Load(bronBestand, nieuwe PsdLaadOpties() { ToestaanWarpRepaint = true, LaadEffectenBron = true }))
{
psdAfbeelding.Save(uitvoerBestand, nieuwe PngOpties
{
Kleurtype = PngKleurtype.WerkelijkeKleurMetAlfa
});
}
PSDNET-1585. Mogelijkheid toegevoegd om de echte positie van LayerGroup links en bovenaan te verkrijgen
string bronBestand = "LaagGroepFiguren.psd";
void AssertGelijk(object verwacht, object werkelijk)
{
if (!object.Equals(verwacht, werkelijk))
{
throw nieuwe Exception("Objecten zijn niet gelijk.");
}
}
gebruik (var afbeelding = (PsdAfbeelding)Image.Load(bronBestand))
{
var lagen = afbeelding.Lagen;
voor (int i = 0; i < lagen.Lengte; i++)
{
var laag = lagen[i];
als (laag is LaagGroep)
{
// LaagGroep ophalen.
var groep = (LaagGroep)laag;
var verwachteLinks = int.MaxValue;
var verwachteBoven = int.MaxValue;
var verwachteRechts = 0;
var verwachteOnder = 0;
// Echte positie van links, boven, rechts en onder berekenen.
voor elk (var innerLaag in groep.Lagen)
{
als (innerLaag is Aanpassingslaag || innerLaag.Grens.Leeg)
{
doorgaan;
}
verwachteLinks = Math.Min(verwachteLinks, innerLaag.Links);
verwachteBoven = Math.Min(verwachteBoven, innerLaag.Boven);
verwachteRechts = Math.Max((verwachteLinks + groep.Breedte), (innerLaag.Links + innerLaag.Breedte));
verwachteOnder = Math.Max((verwachteBoven + groep.Hoogte), (innerLaag.Boven + innerLaag.Hoogte));
}
// Posities van LaagGroep links, boven, rechts en onder zijn nu correct berekend.
AssertGelijk(groep.Links, verwachteLinks);
AssertGelijk(groep.Boven, verwachteBoven);
AssertGelijk(groep.Rechts, verwachteRechts);
AssertGelijk(groep.Onder, verwachteOnder);
}
}
}
PSDNET-1589. Formaat van de laag werkt verkeerd wanneer psd-bestand VogkResource heeft met structuren in punten
string[] bronBestanden = nieuwe string[]
{
"PointsVectorOrigin.psd",
"TopVogkResStruct.psd"
};
voor elke (string bronBestand in bronBestanden)
{
gebruik (PsdAfbeelding afbeelding = (PsdAfbeelding)Image.Load(bronBestand))
{
Laag laag = afbeelding.Lagen[0];
laag.GrootteWijzigen(50, 50);
AssertGelijk(laag.Hoogte, 50);
AssertGelijk(laag.Breedte, 50);
}
}
void AssertGelijk(object verwacht, object werkelijk, string bericht = null)
{
if (!object.Equals(verwacht, werkelijk))
{
throw nieuwe Exception(bericht ?? "Objecten zijn niet gelijk.");
}
}
PSDNET-1608. TextBound werkt niet zoals verwacht
string bronBestand = "input_Test_forTicket.psd";
string uitBestand = "uit_1608.psd";
Grootte nieuweTekstvak = nieuwe Grootte(-1, -1);
gebruik (PsdAfbeelding psdAfbeelding = (PsdAfbeelding)Aspose.PSD.Afbeelding.Load(bronBestand))
{
//Stap: Tekst vervangen
TekstLaag tekstLaag = (TekstLaag)psdAfbeelding.Lagen[3];
tekstLaag.TekstGegevens.Items[0].Tekst = "Teksttest vervangen";
//Stap: TekstBoundBox bijwerken
tekstLaag.TekstGegevens.UpdateLaagGegevens();
nieuweTekstvak = nieuwe Grootte((int)Math.Ceiling(tekstLaag.TekstBoundBox.Breedte), tekstLaag.Hoogte);
tekstLaag.TekstBoundBox = nieuwe Aspose.PSD.VierkanteF(PointF.Empty, nieuweTekstvak);
tekstLaag.TekstGegevens.UpdateLaagGegevens();
psdAfbeelding.Save(uitBestand);
}
// Controleer wijzigingen
gebruik (var psdAfbeelding = (PsdAfbeelding