Versienotities van Aspose.PSD voor Java 24.5
Contents
[
Hide
]
Deze pagina bevat versienotities voor Aspose.PSD voor Java 24.5
Sleutel | Samenvatting | Categorie |
---|---|---|
PSDJAVA-617 | [AI-indeling] Ondersteuning toegevoegd voor het verwerken van AI-bestanden met EPSF-koptekst | Functie |
PSDJAVA-620 | Halftransparantie wordt verkeerd verwerkt in de psd-bestandsvoorbeeld | Fout |
PSDJAVA-621 | Renderng van vormlaag gedeeltelijk incorrect | Fout |
PSDJAVA-622 | Uitzondering bij het opslaan van PSD-bestanden met een formaat groter dan 200 MB en grote dimensies (Er is een probleem met geheugengebruik) | Fout |
PSDJAVA-623 | Fout bij het opslaan van afbeelding bij opslaan naar PDF na update van 23.7 naar 24.3 | Fout |
PSDJAVA-624 | Los het probleem op in de GetFontInfoRecords-methode voor de Chinese lettertypen | Fout |
Wijzigingen in openbare API
Toegevoegde API’s:
- M:com.aspose.psd.fileformats.ai.AiLayerSection.getColorIndex
- M:com.aspose.psd.fileformats.ai.AiLayerSection.setColorIndex(int)
- M:com.aspose.psd.fileformats.ai.AiLayerSection.hasMultiLayerMasks
- M:com.aspose.psd.fileformats.ai.AiLayerSection.setMultiLayerMasks(boolean)
- M:com.aspose.psd.imageoptions.PsdOptions.getBackgroundContents
- M:com.aspose.psd.imageoptions.PsdOptions.setBackgroundContents(com.aspose.psd.fileformats.psd.rawcolor.RawColor)
Verwijderde API’s:
- Geen
Gebruik voorbeelden:
PSDJAVA-617. [AI-indeling] Ondersteuning toegevoegd voor het verwerken van AI-bestanden met EPSF-koptekst
public static void main(String[] args) {
String bronbestand = "src/main/resources/example.ai";
String uitvoerbestand = "src/main/resources/voorbeeld.png";
try (AiImage afbeelding = (AiImage) Image.load(bronbestand)) {
assertAreEqual(afbeelding.getLayers().length, 2);
assertAreEqual(afbeelding.getLayers()[0].hasMultiLayerMasks(), false);
assertAreEqual(afbeelding.getLayers()[0].getColorIndex(), -1);
assertAreEqual(afbeelding.getLayers()[1].hasMultiLayerMasks(), false);
assertAreEqual(afbeelding.getLayers()[1].getColorIndex(), -1);
afbeelding.save(uitvoerbestand, new PngOptions());
}
}
static void assertAreEqual(Object verwacht, Object werkelijk) {
assertAreEqual(verwacht, werkelijk, "Objecten zijn niet gelijk.");
}
static void assertAreEqual(Object verwacht, Object werkelijk, String boodschap) {
if (!verwacht.equals(werkelijk)) {
throw new IllegalArgumentException(boodschap);
}
}
PSDJAVA-620. Halftransparantie wordt verkeerd verwerkt in het psd-bestandsvoorbeeld
String bronbestand = "src/main/resources/frog_nosymb.psd";
String uitvoerbestand = "src/main/resources/frog_nosymb_backgroundcontents_output.psd";
try (PsdImage psdAfbeelding = (PsdImage) Image.load(bronbestand)) {
RawColor achtergrondkleur = new RawColor(PixelDataFormat.getRgb32Bpp());
int argbWaarde = 255 << 24 | 255 << 16 | 255 << 8 | 255;
achtergrondkleur.setAsInt(argbWaarde); // Wit
PsdOptions psdOpties = new PsdOptions(psdAfbeelding);
psdOpties.setColorMode(ColorModes.Rgb);
psdOpties.setCompressionMethod(CompressionMethod.RLE);
psdOpties.setChannelsCount((short) 4);
psdOpties.setBackgroundContents(achtergrondkleur);
psdAfbeelding.save(uitvoerbestand, psdOpties);
}
PSDJAVA-621. Renderng van vormlaag gedeeltelijk incorrect
private static final int ImgToPsdRatio = 256 * 65535;
public static void main(String[] args) {
String bronbestand = "src/main/resources/ShapeLayerTest.psd";
String uitvoerbestand = "src/main/resources/ShapeLayerTest_output.psd";
try (PsdImage im = (PsdImage) Image.load(bronbestand)) {
ShapeLayer vormlaag = (ShapeLayer) im.getLayers()[2];
IPath-pad = vormlaag.getPath();
IPathShape[] padVormen = pad.getItems();
List<BezierKnotRecord> knopenLijst = new ArrayList<>();
for (IPathShape padVorm : padVormen) {
BezierKnotRecord[] knopen = padVorm.getItems();
Collections.addAll(knopenLijst, knopen);
}
// Verander laageigenschappen
PathShape nieuweVorm = new PathShape();
BezierKnotRecord eersteBezierKnoopRecord = new BezierKnotRecord();
eersteBezierKnoopRecord.setLinked(true);
eersteBezierKnoopRecord.setPoints(new Point[]{
pointFToResourcePoint(
new PointF(100, 100),
vormlaag.getContainer().getSize()),
pointFToResourcePoint(
new PointF(100, 100),
vormlaag.getContainer().getSize()),
pointFToResourcePoint(
new PointF(100, 100),
vormlaag.getContainer().getSize())});
BezierKnotRecord tweedeBezierKnoopRecord = new BezierKnotRecord();
tweedeBezierKnoopRecord.setLinked(true);
tweedeBezierKnoopRecord.setPoints(new Point[]{
pointFToResourcePoint(
new PointF(50, 490),
vormlaag.getContainer().getSize()),
pointFToResourcePoint(
new PointF(100, 490),
vormlaag.getContainer().getSize()), // Ankerpunt
pointFToResourcePoint(
new PointF(150, 490),
vormlaag.getContainer().getSize())
});
BezierKnoopRecord derdeBezierKnoopRecord = new BezierKnoopRecord();
derdeBezierKnoopRecord.setLinked(true);
derdeBezierKnoopRecord.setPoints(new Point[]{
pointFToResourcePoint(
new PointF(490, 150),
vormlaag.getContainer().getSize()),
pointFToResourcePoint(
new PointF(490, 50),
vormlaag.getContainer().getSize()),
pointFToResourcePoint(
new PointF(490, 20),
vormlaag.getContainer().getSize()),
});
BezierKnosisRecord[] bezierKnopen = new BezierKnoopRecord[]
{eersteBezierKnoopRecord, tweedeBezierKnoopRecord, derdeBezierKnoopRecord};
nieuweVorm.setItems(bezierKnopen);
Lijst<IPathShape> nieuweVormen = nieuweLijst<>(Arrays.asList(padVormen));
nieuweVormen.add(newShape);
IPathShape[] padVormNieuw = nieuweVormen.toArray(new IPathShape[0]);
pad.setItems(padVormNieuw);
vormlaag.update();
im.save(uitvoerbestand, nieuwe PsdOpties());
}
try (PsdImage im = (PsdImage) Image.load(uitvoerbestand)) {
ShapeLayer vormlaag = (ShapeLayer) im.getLayers()[2];
IPath pad = vormlaag.getPath();
IPathShape[] padVormen = pad.getItems();
List<BezierKnoweRecord> knopenLijst = new ArrayList<>();
for (IPathShape padVorm : padVormen) {
BezierKnoopRecord[] knopen = padVorm.getItems();
knopenLijst.addAll(Arrays.asList(knopen));
}
assertAreEqual(3, padVormen.length);
assertAreEqual(42, vormlaag.getLeft());
assertAreEqual(14, vormlaag.getTop());
assertAreEqual(1600, vormlaag.getBounds().getWidth());
assertAreEqual(1086, vormlaag.getBounds().getHeight());
}
}
static Point pointFToResourcePoint(PointF punt, Formaat afbeeldingsgrootte) {
return new Point(
(int) Math.round(punt.getY() * (ImgToPsdRatio / afbeeldingsgrootte.getHeight())),
(int) Math.round(punt.getX() * (ImgToPsdRatio / afbeeldingsgrootte.getWidth())));
}
static void assertAreEqual(Object verwacht, Object werkelijk) {
assertAreEqual(verwacht, werkelijk, "Objecten zijn niet gelijk.");
}
static void assertAreEqual(Object verwacht, Object werkelijk, String boodschap) {
if (!verwacht.equals(werkelijk)) {
throw new IllegalArgumentException(boodschap);
}
}
PSDJAVA-622. Uitzondering bij het opslaan van PSD-bestanden met een formaat groter dan 200 MB en grote dimensies(Er is een probleem met geheugengebruik)
String bronbestand = "src/main/resources/grootbestand.psd";
String uitvoerbestand = "src/main/resources/output_raw.psd";
PsdLoadOptions laadOpties = new PsdLoadOptions();
laadOpties.setLoadEffectsResource(true);
laadOpties.setUseDiskForLoadEffectsResource(true);
try (PsdImage psdAfbeelding = (PsdImage) Image.load(bronbestand, laadOpties)) {
PsdOpties psdOpties = new PsdOptions();
psdOpties.setCompressionMethod(CompressionMethod.RLE);
// Hier mag geen fout zijn
psdAfbeelding.save(uitvoerbestand, psdOpties);
}
PSDJAVA-623. Fout bij het opslaan van afbeelding bij opslaan naar PDF na update van 23.7 naar 24.3
String bronbestand = "src/main/resources/CVFlor.psd";
String uitvoerbestand = "src/main/resources/_export.pdf";
try (PsdImage psdAfbeelding = (PsdImage) Image.load(bronbestand)) {
PdfOpties opslaanOpties = new PdfOptions();
opslaanOpties.setPdfCoreOptions(new PdfCoreOptions());
psdAfbeelding.save(uitvoerbestand, opslaanOpties);
}
PSDJAVA-624. Los het probleem op in de GetFontInfoRecords-methode voor de Chinese lettertypen
String lettertypenMap = "src/main/resources/Font";
String bronbestand = "src/main/resources/bd-worlds-best-pink.psd";
PsdLoadOptions psdLaadOpties = new PsdLoadOptions();
psdLaadOpties.setLoadEffectsResource(true);
psdLaadOpties.setAllowWarpRepaint(true);
try {
FontInstellingen.setFontsFolders(new String[]{fontsFolder}, true);
try (PsdImage afbeelding = (PsdImage) PsdImage.load(bronbestand, psdLaadOpties)) {
for (Laag laag : image.getLayers()) {
if (laag instanceof TextLayer) {
TextLaag tekstLaag = (TextLayer) laag;
if ("best".equals(tekstLaag.getText())) {
// Zonder dit probleem te verhelpen, zou hier een uitzondering optreden vanwege het Chinese lettertype.
tekstLaag.updateText("SUCCES");
}
}
}
}
} finally {
FontInstellingen.herstellen();
}