Notas da Versão Aspose.PSD for Java 23.9

Chave Resumo Categoria
PSDJAVA-527 Implementar a criação de máscara para novas camadas de ajuste Recurso
PSDJAVA-528 Adicionar suporte para Camadas Recortadas como opção de mesclagem de Grupo Recurso
PSDJAVA-529 O arquivo PSD com modo de cor de 16 bits não aplica máscara para camadas de ajuste Erro
PSDJAVA-530 Renderização incorreta de colchetes na camada de texto Erro
PSDJAVA-531 Não é possível atualizar os estilos nas camadas de texto Erro
PSDJAVA-532 Após exportar o arquivo PSD com CMYK, as cores no arquivo PSD exportado são alteradas Erro
PSDJAVA-533 Um arquivo PSB específico gera a exceção “O retângulo não possui uma área de processamento comum” Erro
PSDJAVA-534 Falha no carregamento da imagem. OverflowException: A operação aritmética resultou em um estouro. Erro

Alterações na API Pública

APIs Adicionadas:

  • M:com.aspose.psd.PixelDataFormat.getCmyk16
  • M:com.aspose.psd.PixelDataFormat.getCmyka16
  • M:com.aspose.psd.fileformats.psd.layers.Layer.getBlendClippedElements
  • M:com.aspose.psd.fileformats.psd.layers.Layer.setBlendClippedElements(boolean)

APIs Removidas:

  • Nenhuma

Exemplos de Uso:

** PSDJAVA-527. Implementar a criação de máscara para novas camadas de ajuste**

public static void main(String[] args) {
    String arquivoSrc = "src/main/resources/zendeya_BW.psd";
    String arquivoDst = "src/main/resources/zendeya_BW_out.psd";

    try (PsdImage im = (PsdImage) Image.load(arquivoSrc)) {
        im.addBlackWhiteAdjustmentLayer();

        im.save(arquivoDst);
    }

    try (PsdImage im = (PsdImage) Image.load(arquivoDst)) {
        Layer camada = im.getLayers()[1];

        assertAreEqual(5, camada.getChannelsCount());
        assertAreEqual((short) -2, camada.getChannelInformation()[4].getChannelID());
    }
}

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-528. Adicionar suporte para Camadas Recortadas como opção de mesclagem de Grupo**

    String arquivoFonte = "src/main/resources/arquivo_fonte_exemplo.psd";
    String outputPsd = "src/main/resources/saida_exemplo.psd";
    String outputPng = "src/main/resources/saida_exemplo.png";

    try (PsdImage imagem = (PsdImage)Image.load(arquivoFonte)) {
        imagem.getLayers()[1].setBlendClippedElements(false);
        imagem.save(outputPsd);
        imagem.save(outputPng, new PngOptions());
    }

** PSDJAVA-529. O arquivo PSD com modo de cor de 16 bits não aplica máscara para camadas de ajuste**

	String arquivoFonte = "src/main/resources/arquivo_fonte.psd";
    String outputPng = "src/main/resources/atual.png";

    try (PsdImage imagem = (PsdImage) Image.load(arquivoFonte)) {
        imagem.save(outputPng, new PngOptions());
    }

** PSDJAVA-530. Renderização incorreta de colchetes na camada de texto**

    String arquivo = "src/main/resources/arquivo1.psd";
    String output = "src/main/resources/saida_1235.png";

    try (PsdImage imagemPsd = (PsdImage) Image.load(arquivo)) {
        for (Layer camada : imagemPsd.getLayers()) {
            if (camada instanceof TextLayer) {
                TextLayer camadaTexto = (TextLayer) camada;
                camadaTexto.getTextData().updateLayerData();

                PsdOptions opcoesImagem = new PsdOptions(imagemPsd);
                imagemPsd.save(output, opcoesImagem);
            }
        }
    }

** PSDJAVA-531. Não é possível atualizar os estilos nas camadas de texto**

    String arquivoFonte = "src/main/resources/Exemplo_TamanhoFonte.psd";
    String outputFile = "src/main/resources/saida_Exemplo_TamanhoFonte.psd";

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

    try (PsdImage imagemPsd = (PsdImage) Image.load(arquivoFonte, opcoesCarregamentoPsd)) {
        TextLayer l1 = (TextLayer) imagemPsd.getLayers()[4];
        TextLayer l2 = (TextLayer) imagemPsd.getLayers()[5];

        ITextPortion[] itensTexto1 = l1.getTextData().producePortions(new String[]{"texto1", "texto2"},
                l1.getTextData().getItems()[0].getStyle(), l1.getTextData().getItems()[0].getParagraph());

        l1.getTextData().removePortion(0);
        for (ITextPortion item : itensTexto1) {
            l1.getTextData().addPortion(item);
        }

        ITextPortion[] itensTexto2 = l2.getTextData().producePortions(new String[]{"camada de texto 1", "camada de texto 22"},
                l2.getTextData().getItems()[0].getStyle(), l2.getTextData().getItems()[0].getParagraph());

        for (ITextPortion item : itensTexto2) {
            l2.getTextData().addPortion(item);
        }

        l1.getTextData().updateLayerData();
        l2.getTextData().updateLayerData();

        imagemPsd.save(outputFile);
    }

** PSDJAVA-532. Após exportar o arquivo PSD com CMYK, as cores no arquivo PSD exportado são alteradas**

    String arquivoFonte = "src/main/resources/canyon.psd";
    String outputFilePng = "src/main/resources/saida_canyon.png";

    MemoryStream outputStream = new MemoryStream();

    try (PsdImage imagemPsd = (PsdImage) Image.load(arquivoFonte)) {
        imagemPsd.save(outputStream.toOutputStream());
    }

    outputStream.setPosition(0);
    try (PsdImage imagemPsd = (PsdImage) Image.load(outputStream.toInputStream())) {
        imagemPsd.save(outputFilePng, new PngOptions());
    }

    outputStream.close();

** PSDJAVA-533. Um arquivo PSB específico gera a exceção “O retângulo não possui uma área de processamento comum”**

    String entrada = "src/main/resources/1619_source.psb";
    String saida = "src/main/resources/1619_output.png";

    PsdLoadOptions opcoesCarregamentoPsd = new PsdLoadOptions();
    opcoesCarregamentoPsd.setLoadEffectsResource(true);
    try (PsdImage imagem = (PsdImage) Image.load(entrada, opcoesCarregamentoPsd)) {
        PngOptions opcoesPng = new PngOptions();
        opcoesPng.setCompressionLevel(9);
        opcoesPng.setColorType(PngColorType.TruecolorWithAlpha);
        imagem.save(saida, opcoesPng);
    }

** PSDJAVA-534. Falha no carregamento da imagem. OverflowException: A operação aritmética resultou em um estouro.**

public static void main(String[] args) {
    String arquivoFonte = "src/main/resources/9baa6962-f409-41ee-88da-418ea87bb56f_test_2.psd";

    try (PsdImage imagem = (PsdImage)PsdImage.load(arquivoFonte))
    {
        Layer camada = imagem.getLayers()[28];
        GrdmResource recursoGrdm = (GrdmResource)camada.getResources()[0];

        assertAreEqual("自定", recursoGrdm.getGradientName());
    }

}

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);
    }
}