Aspose.PSD für Java 20.5 - Versionshinweise

Contents
[ ]
Schlüssel Zusammenfassung Kategorie
PSDJAVA-188 Unterstützung für den Fortschritt bei der Dokumentkonvertierung Feature
PSDJAVA-197 Unterstützung des Farbmodus Graustufen PSD-Bildspeicherung mit 16 Bit pro Kanal Feature
PSDJAVA-198 Unterstützung des Nvrt-Ressourcen (Invert Adjustement Layer-Ressource) Feature
PSDJAVA-200 Unterstützung von Ebenenmasken für Ebenengruppen Feature
PSDJAVA-195 Behebung beim Speichern eines PSD-Bildes mit Farbmodus Graustufen 16 Bit pro Kanal im 16-Bit pro Kanal RGB-PSD-Format Bug
PSDJAVA-196 Behebung beim Speichern eines PSD-Bildes mit Farbmodus Graustufen 16 Bit pro Kanal im 8-Bit pro Kanal Graustufen-PSD-Format Bug
PSDJAVA-199 Textausrichtung durch ITextPortion funktioniert nicht für rechts-nach-links-Sprachen. Die Ausgabedatei ist beschädigt. Bug
PSDJAVA-201 Ausnahme beim Versuch, eine bestimmte PSD-Datei mit Lab-Farbe und 8 bit/Kanal zu öffnen Bug

Öffentliche API-Änderungen

Hinzugefügte APIs:

  • Keine

Entfernte APIs:

  • Keine

Verwendungsbeispiele:

PSDJAVA-188. Unterstützung für den Dokumentkonvertierungsfortschritt

 // Ein Beispiel für die Verwendung des Fortschrittshandlers für Lade- und Speicheroperationen.

// Das Programm verwendet verschiedene Speicheroptionen, um Fortschrittsereignisse auszulösen.

String sourceFilePath = "Apple.psd";

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

// Erstelle einen Fortschritts-Handler, der Fortschrittsinformationen in die Konsole schreibt

ProgressEventHandler localProgressEventHandler = new ProgressEventHandler()

{

    @Override

    public void invoke(ProgressEventHandlerInfo progressInfo)

    {

        String message = String.format(

                "%s %s: %s von %s", 

                progressInfo.getDescription(), 

                Enum.getName(EventType.class, progressInfo.getEventType()), 

                progressInfo.getValue(), 

                progressInfo.getMaxValue());

        System.out.println(message);

    }

};

System.out.println("---------- Lade Apple.psd ----------");

PsdLoadOptions loadOptions = new PsdLoadOptions();

// Binden Sie den Fortschritts-Handler, um den Ladevorgang anzuzeigen

loadOptions.setProgressEventHandler(localProgressEventHandler);

// Laden Sie PSD unter Verwendung spezifischer Ladeoptionen

PsdImage image = (PsdImage)Image.load(sourceFilePath, loadOptions);

try

{

    System.out.println("---------- Speichern von Apple.psd im PNG-Format ----------");

    PngOptions pngOptions = new PngOptions();

    // Mache das Ausgabebild farbig und nicht transparent

    pngOptions.setColorType(PngColorType.Truecolor);

    // Binden Sie den Fortschritts-Handler, um den Speicherfortschritt anzuzeigen

    pngOptions.setProgressEventHandler(localProgressEventHandler);

    // Konvertiere PSD in PNG mit spezifischen Merkmalen

    image.save(outputStream, pngOptions);

    System.out.println("---------- Speichern von Apple.psd im PSD-Format ----------");

    PsdOptions psdOptions = new PsdOptions();

    // Mache das Ausgabefarbe PSD farbig

    psdOptions.setColorMode(ColorModes.Rgb);

    // Setze einen Kanal für jede Farbe (Rot, Grün und Blau) plus einen Zusammensetzungskanal

    psdOptions.setChannelsCount((short)4);

    // Binden Sie den Fortschritts-Handler, um den Speicherfortschritt anzuzeigen

    psdOptions.setProgressEventHandler(localProgressEventHandler);

    // Speichern Sie eine Kopie von PSD mit spezifischen Merkmalen

    image.save(outputStream, psdOptions);

}

finally

{

    image.dispose();

}

PSDJAVA-197. Unterstützung der PSD-Bildspeicherung im Graustufen-Farbmodus mit 16 Bit pro Kanal

 // Ein Beispiel für die Anwendung verschiedener Kombinationen von Farbmodi, Bits pro Kanal, Kanälen

// Zählimpfen und Kompressionen für spezifische Ebenen.

// Mache eine Methode aus dem lokalen Bereich zugänglich

class LocalScopeExtension

{

    void saveToPsdThenLoadAndSaveToPng(

            String file, 

            short colorMode, 

            short channelBitsCount, 

            short channelsCount, 

            short compression, 

            int layerNumber)

    {

        String filePath = file + ".psd";

        String postfix = Enum.getName(ColorModes.class, colorMode) + channelBitsCount + "_" + 

                channelsCount + "_" + Enum.getName(CompressionMethod.class, compression);

        String exportPath = file + postfix + ".psd";

        String pngExportPath = file + postfix + ".png";

        // Lade eine vordefinierte 16-Bit-Graustufen-PSD

        PsdImage image = (PsdImage)Image.load(filePath);

        try

        {

            RasterCachedImage raster = layerNumber >= 0 ? image.getLayers()[layerNumber] : image;

            // Zeichne einen grauen Innenrand um den Rand der Ebene

            Graphics graphics = new Graphics(raster);

            int width = raster.getWidth();

            int height = raster.getHeight();

            Rectangle rect = new Rectangle(

                    width / 3, 

                    height / 3, 

                    width - (2 * (width / 3)) - 1, 

                    height - (2 * (height / 3)) - 1);

            graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);

            // Speichern Sie eine Kopie von PSD mit spezifischen Merkmalen

            PsdOptions psdOptions = new PsdOptions();

            psdOptions.setColorMode(colorMode);

            psdOptions.setChannelBitsCount(channelBitsCount);

            psdOptions.setChannelsCount(channelsCount);

            psdOptions.setCompressionMethod(compression);

            image.save(exportPath, psdOptions);

        }

        finally

        {

            image.dispose();

        }

        // Lade die gespeicherte PSD

        PsdImage image1 = (PsdImage)Image.load(exportPath);

        try

        {

            // Konvertiere die gespeicherte PSD in ein Graustufen-PNG-Bild

            PngOptions pngOptions = new PngOptions();

            pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

            image1.save(pngExportPath, pngOptions); // hier sollte keine Ausnahme auftreten

        }

        finally

        {

            image1.dispose();

        }

    }

}

LocalScopeExtension $ = new LocalScopeExtension();

$.saveToPsdThenLoadAndSaveToPng("grayscale5x5", ColorModes.Cmyk, (short)16, (short)5, CompressionMethod.RLE, 0);

$.saveToPsdThenLoadAndSaveToPng("argb16bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, 0);

$.saveToPsdThenLoadAndSaveToPng("argb16bit_5x5_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);

$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, 0);

$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);

$.saveToPsdThenLoadAndSaveToPng("cmyk16bit_5x5_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);

$.saveToPsdThenLoadAndSaveToPng("index8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);

PSDJAVA-198. Unterstützung der Nvrt-Ressource (Invert Adjustement Layer-Ressource)

 // Ein Beispiel zum Auffinden der Nvrt-Ressource einer invertierten Anpassungsebenen-Ressource.

String inPsdFilePath = "InvertAdjustmentLayer.psd";

NvrtResource nvrtResource = null;

// Lade eine vordefinierte PSD, die eine invertierte Anpassungsebene enthält

PsdImage psdImage = (PsdImage)Image.load(inPsdFilePath);

try

{

    // Versuchen Sie, eine Ressource der invertierten Anpassungsebene zu finden

    for (Layer layer : psdImage.getLayers())

    {

        if (layer instanceof InvertAdjustmentLayer)

        {

            for (LayerResource layerResource : layer.getResources())

            {

                if (layerResource instanceof NvrtResource)

                {

                    // Die Nvrt-Ressource wurde gefunden

                    nvrtResource = (NvrtResource)layerResource;

                    break;

                }

            }

        }

    }

}

finally

{

    psdImage.dispose();

}

PSDJAVA-200. Unterstützung von Ebenenmasken für Ebenengruppen

 // Ein Beispiel zur Unterstützung von Ebenenmasken für Ebenengruppen. Das Programm lädt und speichert PSD

// in verschiedenen Ausgabeformaten, ohne Ausnahmen auszulösen.

String srcFile = "psdnet595.psd";

String outputPng = "output.png";

String outputPsd = "output.psd";

// Lade eine vordefinierte PSD, die Ebenenmasken für Ebenengruppen enthält

PsdImage input = (PsdImage)Image.load(srcFile);

try

{

    // Konvertiere die geladene PSD in PNG

    input.save(outputPng, new PngOptions());

    // Speichern Sie eine Kopie der PSD

    input.save(outputPsd);

}

finally

{

    input.dispose();

}

PSDJAVA-195. Behebung beim Speichern eines PSD-Bildes mit Graustufen-Farbmodus 16 Bit pro Kanal in ein 16-Bit pro Kanal RGB-PSD-Format

 // Ein Beispiel für die Konvertierung einer 16-Bit-Graustufen-PSD in eine 16-Bit-RGB-PSD und dann zurück zu 

// 16-Bit-Graustufen, aber ein Rasterbild.

String sourceFilePath = "grayscale5x5.psd";

String exportFilePath = "rgb16bit5x5_output.psd";

String pngExportPath = "rgb16bit5x5_output.png";

// Lade eine vordefinierte 16-Bit-Graustufen-PSD

PsdImage image = (PsdImage)Image.load(sourceFilePath);

try

{

    RasterCachedImage raster = image.getLayers()[0];

    // Zeichne einen grauen Innenrand um den Rand der Ebene

    Graphics graphics = new Graphics(raster);

    int width = raster.getWidth();

    int height = raster.getHeight();

    Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);

    graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);

    // Speichern Sie eine Kopie von PSD mit geänderter Farbmodus in RBG

    PsdOptions psdOptions = new PsdOptions();

    psdOptions.setColorMode(ColorModes.Rgb);

    psdOptions.setChannelBitsCount((short)16);

    psdOptions.setChannelsCount((short)4);

    image.save(exportFilePath, psdOptions);

}

finally

{

    image.dispose();

}

// Lade die gespeicherte PSD

PsdImage image1 = (PsdImage)Image.load(exportFilePath);

try

{

    PngOptions pngOptions = new PngOptions();

    pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

    // Konvertiere die gespeicherte PSD in ein Graustufen-PNG-Bild

    image1.save(pngExportPath, pngOptions); // hier sollte keine Ausnahme auftreten

}

finally

{

    image1.dispose();

}

PSDJAVA-196. Behebung beim Speichern eines PSD-Bildes mit Graustufen-Farbmodus 16 Bit pro Kanal in ein 8-Bit pro Kanal Graustufen-PSD-Format

 // Ein Beispiel für die Umwandlung einer 16-Bit-Graustufen-PSD in eine 8-Bit-Graustufen-PSD und dann in 

// ein 8-Bit-Graustufen-Rasterbild.

String sourceFilePath = "grayscale16bit.psd";

String exportFilePath = "grayscale16bit_output.psd";

String pngExportPath = "grayscale16bit_output.png";

// Lade eine vordefinierte 16-Bit-Graustufen-PSD

PsdImage image = (PsdImage)Image.load(sourceFilePath);

try

{

    RasterCachedImage raster = image.getLayers()[0];

    // Zeichne einen grauen Innenrand um den Rand der Ebene

    Graphics graphics = new Graphics(raster);

    int width = raster.getWidth();

    int height = raster.getHeight();

    Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);

    graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);

    // Speichern Sie eine Kopie von PSD mit einer Kanalanzahl von 8-Bit

    PsdOptions psdOptions = new PsdOptions();

    psdOptions.setColorMode(ColorModes.Grayscale);

    psdOptions.setChannelBitsCount((short)8);

    psdOptions.setChannelsCount((short)2);

    image.save(exportFilePath, psdOptions);

}

finally

{

    image.dispose();

}

// Lade die gespeicherte PSD

PsdImage image1 = (PsdImage)Image.load(exportFilePath);

try

{

    PngOptions pngOptions = new PngOptions();

    pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

    // Konvertiere die gespeicherte PSD in ein Graustufen-PNG-Bild

    image1.save(pngExportPath, pngOptions); // hier sollte keine Ausnahme auftreten

}

finally

{

    image1.dispose();

}

PSDJAVA-199. Textausrichtung durch ITextPortion funktioniert nicht für rechts-nach-links-Sprachen. Die Ausgabedatei ist beschädigt.

 // Ein Beispiel zum Ausrichten von RTL-Textebenen durch ITextPortion. Das Programm modifiziert

// eine vorhandene RTL-Textebene in der geladenen PSD und speichert eine Kopie des modifizierten Dokuments.

String sourceFileName = "bidi.psd";

String outputFileName = "bidiOutput.psd";

// Lade eine vordefinierte PSD, die eine RTL-Textebene enthält

PsdImage image = (PsdImage)Image.load(sourceFileName);

try

{

    // Erhalte Textbereiche aus der Ebene

    TextLayer layer = (TextLayer)image.getLayers()[2];

    ITextPortion[] portions = layer.getTextData().getItems();

    // Ändere die Textausrichtung

    portions[0].getParagraph().setJustification(2);

    // Übertrage die Änderungen auf die Ebene

    layer.getTextData().updateLayerData();

    // Speichere eine modifizierte Kopie der PSD

    image.save(outputFileName);

}

finally

{

    image.dispose();

}

PSDJAVA-201. Ausnahme beim Versuch, eine bestimmte PSD-Datei mit Lab-Farbe und 8 bit/Kanal zu öffnen

 // Ein Beispiel zur Unterstützung von 8-Bit-Photoshop-Dokument im LAB-Farbmodus.

String srcFile = "Untitled-1.psd";

String outputFilePsd = "output.psd";

// Lade eine vordefinierte 8-Bit-PSD im LAB-Farbmodus

PsdImage psdImage = (PsdImage)Image.load(srcFile);

try

{

    // Speichere eine Kopie der geladenen PSD

    psdImage.save(outputFilePsd);

}

finally

{

    psdImage.dispose();

}