Aspose.PSD für Java 24.4 - Versionshinweise

Schlüssel Zusammenfassung Kategorie
PSDJAVA-610 Einstellung der Lizenz für Aspose.PSD für Java führt zu einer Ausnahme, wenn sie mehr als einmal erfolgt Fehler
PSDJAVA-611 [AI-Format] Hinzufügen der XObjectForm-Ressourcenverarbeitung Funktion
PSDJAVA-612 Konstruktor für die ShapeLayer hinzufügen Funktion
PSDJAVA-613 Beheben der Konvertierung einer Psd-Datei von RGB nach CMYK Fehler
PSDJAVA-614 Bestimmte PSD-Datei kann nicht mit Aspose.PSD exportiert werden Fehler

Änderungen an der öffentlichen API

Hinzugefügte APIs:

  • M:com.aspose.psd.fileformats.psd.PsdImage.addShapeLayer

Entfernte APIs:

  • Keine

Beispiele für die Verwendung:

PSDJAVA-610. Einstellen der Lizenz für Aspose.PSD für Java führt zu einer Ausnahme, wenn sie mehr als einmal erfolgt

        Lizenz lizenz = new License();
        String lizenzKorrektJava = "Aspose.PSD.Java.lic";

        lizenz.setLicense(liccorrectJava);
        lizenz.setLicense(liccorrectJava);

PSDJAVA-611. [AI-Format] Hinzufügen der XObjectForm-Ressourcenverarbeitung

        String quelleDatei = "src/main/resources/beispiel.ai";
        String ausgabedateiPfad = "src/main/resources/beispiel.png";

        try (AiImage bild = (AiImage) Image.load(sourceFile)) {
            bild.save(ausgabedateiPfad, new PngOptions());
        }

PSDJAVA-612. Konstruktor für die ShapeLayer hinzufügen

    private static final int IMG_TO_PSD_RATIO = 256 * 65535;

    public static void main(String[] args) {
        String ausgabedatei = "src/main/resources/AddShapeLayer_output.psd";

        try (PsdImage neuePsd = new PsdImage(600, 400)) {
            ShapeLayer layer = newPsd.addShapeLayer();

            PathShape neueForm = generateNewShape(newPsd.getSize());
            List<IPathShape> neueFormen = new List<>();
            neueFormen.add(neueForm);
            layer.getPath().setItems(neueFormen.toArray(new IPathShape[0]));

            layer.update();

            newPsd.save(outputFile);
        }

        try (PsdImage bild = (PsdImage) Image.load(outputFile)) {
            assertAreEqual(2, bild.getLayer().length);

            ShapeLayer shapeLayer = (ShapeLayer) bild.getLayers()[1];
            ColorFillSettings interneFüllung = (ColorFillSettings) shapeLayer.getFill();
            IStrokeSettings strichEinstellungen = shapeLayer.getStroke();
            ColorFillSettings strichFüllung = (ColorFillSettings) strokeSettings.getFill();

            assertAreEqual(1, shapeLayer.getPath().getItems().length); // 1 Form
            assertAreEqual(3, shapeLayer.getPath().getItems()[0].getItems().length); // 3 Knoten in einer Form

            assertAreEqual(-16127182, interneFüllung.getColor().toArgb()); // ff09eb32

            assertAreEqual(7.41, strichEinstellungen.getSize());
            assertAreEqual(false, strichEinstellungen.getEnabled());
            assertAreEqual(StrokePosition.Center, strichEinstellungen.getLineAlignment());
            assertAreEqual(LineCapType.ButtCap, strokeSettings.getLineCap());
            assertAreEqual(LineJoinType.MiterJoin, strichEinstellungen.getLineJoin());
            assertAreEqual(-16777216, strichFüllung.getColor().toArgb()); // ff000000
        }
    }

    static PathShape generateNewShape(Size bildGröße) {
        PathShape neueForm = new PathShape();

        PointF punkt1 = new PointF(20, 100);
        PointF punkt2 = new PointF(200, 100);
        PointF punkt3 = new PointF(300, 10);

        BezierKnotRecord ersterBezierKnoten = new BezierKnotRecord();
        ersterBezierKnoten.setLinked(true);
        ersterBezierKnoten.setPoints(new Point[]{
                punktFZuRessourcePunkt(punkt1, bildGröße),
                punktFZuRessourcePunkt(punkt2, bildGröße),
                punktFZuRessourcePunkt(punkt3, bildGröße)
        });

        BezierKnotRecord zweiterBezierKnoten = new BezierKnotRecord();
        zweiterBezierKnoten.setLinked(true);
        zweiterBezierKnoten.setPoints(new Point[]{
                punktFZuRessourcePunkt(punkt2, bildGröße),
                punktFZuRessourcePunkt(punkt2, bildGröße),
                punktFZuRessourcePunkt(punkt2, bildGröße)
        });

        BezierKnotRecord dritterBezierKnoten = new BezierKnotRecord();
        dritterBezierKnoten.setLinked(true);
        dritterBezierKnoten.setPoints(new Point[]{
                punktFZuRessourcePunkt(punkt3, bildGröße),
                punktFZuRessourcePunkt(punkt3, bildGröße),
                punktFZuRessourcePunkt(punkt3, bildGröße)
        });

        BezierKnotRecord[] bezierKnoten = new BezierKnotRecord[]{
                ersterBezierKnoten,
                zweiterBezierKnoten,
                dritterBezierKnoten
        };

        neueForm.setItems(bezierKnoten);

        return neueForm;
    }

    static Point punktFZuRessourcePunkt(PointF punkt, Size bildGröße) {
        return new Point(
                Math.round(punkt.getY() * (IMG_TO_PSD_RATIO / bildGröße.getHeight())),
                Math.round(punkt.getX() * (IMG_TO_PSD_RATIO / bildGröße.getWidth())));
    }

    static void assertAreEqual(Object erwartet, Object tatsächlich) {
        assertAreEqual(erwartet, tatsächlich, "Objekte sind nicht gleich.");
    }

    static void assertAreEqual(Object erwartet, Object tatsächlich, String nachricht) {
        if (!erwartet.equals(tatsächlich)) {
            throw new IllegalArgumentException(nachricht);
        }
    }

PSDJAVA-613. Beheben der Konvertierung einer PSD-Datei von RGB nach CMYK

    public static void main(String[] args) {
        // Überprüfen, dass die PSD-Datei, die von RGB nach CMYK + RLE 4 Kanäle konvertiert wurde, tatsächlich 4 Kanäle hat
        // und HasTransparencyData == false.
        String quelleDatei = "src/main/resources/frog_nosymb.psd";
        String ausgabedatei = "src/main/resources/frog_nosymb_output.psd";

        try (PsdImage psdBild = (PsdImage) Image.load(sourceFile)) {
            psdBild.setTransparencyData(false);

            PsdOptions psdOptionen = new PsdOptions(psdBild);
            psdOptionen.setColorMode(ColorModes.Cmyk);
            psdOptionen.setCompressionMethod(CompressionMethod.RLE);
            psdOptionen.setChannelsCount((short) 4);

            psdBild.save(outputFile, psdOptionen);
        }

        try (PsdImage psdBild = (PsdImage) Image.load(outputFile)) {
            assertAreEqual(false, psdBild.hasTransparencyData());
            assertAreEqual(4, psdBild.getLayers()[0].getChannelsCount());
        }
    }

    static void assertAreEqual(Object erwartet, Object tatsächlich) {
        assertAreEqual(erwartet, tatsächlich, "Objekte sind nicht gleich.");
    }

    static void assertAreEqual(Object erwartet, Object tatsächlich, String nachricht) {
        if (!erwartet.equals(tatsächlich)) {
            throw new IllegalArgumentException(nachricht);
        }
    }

PSDJAVA-614. Bestimmte PSD-Datei kann nicht mit Aspose.PSD exportiert werden

        String quelleDatei = "src/main/resources/1966source.psd";
        String ausgabePng = "src/main/resources/ausgabe.png";

        PsdLoadOptions psdLadeOptionen = new PsdLoadOptions();
        psdLadeOptionen.setLoadEffectsResource(true);

        try (PsdImage psdBild = (PsdImage) Image.load(sourceFile, psdLadeOptionen)) {
            psdBild.save(outputPng, new PngOptions());
        }