Notas da Versão do Aspose.PSD para Java 23.8

Chave Resumo Categoria
PSDJAVA-518 Adicionar novo tipo de deformação (Flag) Recurso
PSDJAVA-519 Adicionar novos tipos de deformação: arco para cima, arco para baixo, esfera Recurso
PSDJAVA-520 Implementar novo método PsdImage.AddPosterizeAdjustmentLayer para adicionar nova camada Posterize Recurso
PSDJAVA-521 Informações do PSD perdidas apenas ao abrir e salvar Bug
PSDJAVA-522 Falha no carregamento da imagem Bug
PSDJAVA-523 Falha no carregamento da imagem: Não é possível converter um objeto do tipo UnknownStructure para o tipo DescriptorStructure Bug
PSDJAVA-524 Arquivo alterado na biblioteca de terceiros corrompe o arquivo PSD, mas pode ser aberto no Photoshop Bug

Alterações na API Pública

APIs Adicionadas:

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

APIs Removidas:

  • Nenhuma

Exemplos de Uso:

PSDJAVA-518. Adicionar novo tipo de deformação (Flag)

    String arquivoFonte = "src/main/resources/flag_warp.psd";
    String arquivoSaida = "src/main/resources/flag_export.png";

    PsdLoadOptions psdLoadOptions = new PsdLoadOptions();
    psdLoadOptions.setAllowWarpRepaint(true);
    psdLoadOptions.setLoadEffectsResource(true);
    try (PsdImage psdImage = (PsdImage) Image.load(arquivoFonte, psdLoadOptions)) {
        PngOptions pngOptions = new PngOptions();
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

        psdImage.save(arquivoSaida, pngOptions);
    }

PSDJAVA-519. Adicionar novos tipos de deformação: arco para cima, arco para baixo, esfera

    String arquivoArcoSuperior = "src/main/resources/arc_upper_warp.psd";
    String arquivoArcoInferior = "src/main/resources/arc_lower_warp.psd";
    String arquivoSaliente = "src/main/resources/bulge_warp.psd";

    String arquivoSaidaArcoSuperior = "src/main/resources/ArcUpper_export.png";
    String arquivoSaidaArcoInferior = "src/main/resources/ArcLower_export.png";
    String arquivoSaidaSaliente = "src/main/resources/Bulge_export.png";

    PsdLoadOptions psdLoadOptions = new PsdLoadOptions();
    psdLoadOptions.setAllowWarpRepaint(true);
    psdLoadOptions.setLoadEffectsResource(true);

    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoArcoSuperior, psdLoadOptions)) {
        psdImage.save(arquivoSaidaArcoSuperior, pngOptions);
    }

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoArcoInferior, psdLoadOptions)) {
        psdImage.save(arquivoSaidaArcoInferior, pngOptions);
    }

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoSaliente, psdLoadOptions)) {
        psdImage.save(arquivoSaidaSaliente, pngOptions);
    }

PSDJAVA-520. Implementar novo método PsdImage.AddPosterizeAdjustmentLayer para adicionar nova camada Posterize

public static void main(String[] args) {
    String arquivoSrc = "src/main/resources/zendeya.psd";
    String arquivoOut = "src/main/resources/zendeya.psd.out.psd";

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoSrc)) {
        psdImage.addPosterizeAdjustmentLayer();
        psdImage.save(arquivoOut);
    }

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

    // Verificar alterações salvas
    try (PsdImage imagem = (PsdImage) Image.load(arquivoOut, psdLoadOptions)) {
        assertAreEqual(2, imagem.getLayers().length);

        PosterizeLayer camadaPosterize = (PosterizeLayer) imagem.getLayers()[1];

        assertAreEqual(true, camadaPosterize instanceof PosterizeLayer);
    }
}

static void assertAreEqual(Object esperado, Object atual) {
    assertAreEqual(esperado, atual, "Os objetos não são iguais.");
}

static void assertAreEqual(Object esperado, Object atual, String mensagem) {
    if (!esperado.equals(atual)) {
        throw new IllegalArgumentException(mensagem);
    }
}

PSDJAVA-521. Informações PSD perdidas apenas ao abrir e salvar

    String src = "src/main/resources/Arquivo_original.psd";
    String outputPsd = "src/main/resources/out_Arquivo_original.psd";
    String outputPng = "src/main/resources/out_Arquivo_original.png";

    try (PsdImage psdImage = (PsdImage) Image.load(src)) {
        PngOptions pngOptions = new PngOptions();
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

        psdImage.save(outputPsd);
        psdImage.save(outputPng, pngOptions);
    }

PSDJAVA-522. Falha no carregamento da imagem

    String arquivoFonte1 = "src/main/resources/test_text.psd";
    String arquivoFonte2 = "src/main/resources/test_smart_object.psd";

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoFonte1)) {
    }

    try (PsdImage psdImage = (PsdImage) Image.load(arquivoFonte2)) {
    }

PSDJAVA-523. Falha no carregamento da imagem: Não é possível converter um objeto do tipo UnknownStructure para o tipo DescriptorStructure

   try (PsdImage novoPsd = new PsdImage(10, 10)) {
        novoPsd.addLayer(FillLayer.createInstance(FillType.Gradient));

        final MemoryStream memStream = new MemoryStream(DescriptorStructure.StructureKey + 1000);
        try {
            novoPsd.save(memStream.toOutputStream());

            memStream.seek(DescriptorStructure.StructureKey, SeekOrigin.Current);
            memStream.write(new byte[1], 0, 0);
            memStream.setPosition(0);

            try (PsdImage psdImage = (PsdImage) Image.load(memStream.toInputStream())) {
                // Deve carregar corretamente
            }
        } finally {
            memStream.close();
        }
    }

PSDJAVA-524. Arquivo alterado na biblioteca de terceiros corrompe o arquivo PSD, mas pode ser aberto no Photoshop

    String arquivoFonte = "src/main/resources/saida.psd";
    String arquivoSaida = "src/main/resources/export.png";

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

    try (PsdImage img = (PsdImage) Image.load(arquivoFonte, psdLoadOptions)) {
        PngOptions pngOptions = new PngOptions();
        pngOptions.setCompressionLevel(9);
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

        img.save(arquivoSaida, pngOptions);
    }