Aspose.PSD para Java 20.5 - Notas de Lançamento

Contents
[ ]
Chave Resumo Categoria
PSDJAVA-188 Suporte para progresso de conversão de documento Recurso
PSDJAVA-197 Suporte para salvar imagem PSD de modo de cor escala de cinza com 16 bits por canal Recurso
PSDJAVA-198 Suporte para Recurso de Camada de Ajuste de Inversão Nvrt Recurso
PSDJAVA-200 Suporte de Máscaras de Camada para Grupos de Camadas Recurso
PSDJAVA-195 Correção ao salvar imagem PSD com modo de cor escala de cinza de 16 bits por canal para formato PSD de 16 bits por canal RGB Erro
PSDJAVA-196 Correção ao salvar imagem PSD com modo de cor escala de cinza de 16 bits por canal para formato PSD de 8 bits por canal escala de cinza Erro
PSDJAVA-199 Alinhamento de texto através de ITextPortion não funciona para idiomas da direita para a esquerda. O arquivo de saída fica danificado. Erro
PSDJAVA-201 Exceção ao tentar abrir arquivo Psd específico com Cor Lab e 8 bits/canal Erro

Alterações na API Pública

APIs Adicionadas:

  • Nenhuma

APIs Removidas:

  • Nenhuma

Exemplos de Uso:

PSDJAVA-188. Suporte para progresso de conversão de documento

 // Um exemplo de uso do manipulador de progresso para operações de carregamento e salvamento.

String sourceFilePath = "Apple.psd";

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

// Cria um manipulador de progresso que escreve informações de progresso no console

ProgressEventHandler localProgressEventHandler = new ProgressEventHandler()

{

    @Override

    public void invoke(ProgressEventHandlerInfo progressInfo)

    {

        String message = String.format(

                "%s %s: %s de %s",

                progressInfo.getDescription(),

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

                progressInfo.getValue(),

                progressInfo.getMaxValue());

        System.out.println(message);

    }

};

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

PsdLoadOptions loadOptions = new PsdLoadOptions();

// Vincula o manipulador de progresso para mostrar o progresso do carregamento

loadOptions.setProgressEventHandler(localProgressEventHandler);

// Carrega o PSD usando opções de carregamento específicas

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

try

{

    System.out.println("---------- Salvando Apple.psd em formato PNG ----------");

    PngOptions pngOptions = new PngOptions();

    // Torna a imagem de saída colorida e não transparente

    pngOptions.setColorType(PngColorType.Truecolor);

    // Vincula o manipulador de progresso para mostrar o progresso do salvamento

    pngOptions.setProgressEventHandler(localProgressEventHandler);

    // Converte o PSD para PNG com características específicas

    image.save(outputStream, pngOptions);

    System.out.println("---------- Salvando Apple.psd em formato PSD ----------");

    PsdOptions psdOptions = new PsdOptions();

    // Torna o PSD de saída colorido

    psdOptions.setColorMode(ColorModes.Rgb);

    // Define um canal para cada cor (vermelho, verde e azul) mais um canal composto

    psdOptions.setChannelsCount((short)4);

    // Vincula o manipulador de progresso para mostrar o progresso do salvamento

    psdOptions.setProgressEventHandler(localProgressEventHandler);

    // Salva uma cópia do PSD com características específicas

    image.save(outputStream, psdOptions);

}

finally

{

    image.dispose();

}

PSDJAVA-197. Suporte para salvar imagem PSD de modo de cor escala de cinza com 16 bits por canal

 // Um exemplo de aplicação de diferentes combinações de modos de cor, bits por canal, contagens

// de canais e compressões para camadas específicas.

// Faz com que um método seja acessível a partir do escopo local

class LocalScopeExtension

{

    void saveToPsdThenLoadAndSaveToPng(

            String arquivo,

            short modoCor,

            short contagemBitsCanal,

            short contagemCanales,

            short compressão,

            int númeroCamada)

    {

        String caminhoArquivo = arquivo + ".psd";

        String sufixo = Enum.getName(ColorModes.class, modoCor) + contagemBitsCanal + "_" +

                contagemCanales + "_" + Enum.getName(CompressionMethod.class, compressão);

        String caminhoExportação = arquivo + sufixo + ".psd";

        String caminhoExportaçãoPng = arquivo + sufixo + ".png";

        // Carrega um PSD pré-definido de escala de cinza de 16 bits

        PsdImage imagem = (PsdImage)Image.load(caminhoArquivo);

        try

        {

            RasterCachedImage raster = númeroCamada >= 0 ? imagem.getLayers()[númeroCamada] : imagem;

            // Desenha uma borda interna cinza ao redor do perímetro da camada

            Graphics graphics = new Graphics(raster);

            int largura = raster.getWidth();

            int altura = raster.getHeight();

            Rectangle rect = new Rectangle(

                    largura / 3,

                    altura / 3,

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

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

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

            // Salva uma cópia do PSD com características específicas

            PsdOptions psdOptions = new PsdOptions();

            psdOptions.setColorMode(modoCor);

            psdOptions.setChannelBitsCount(contagemBitsCanal);

            psdOptions.setChannelsCount(contagemCanales);

            psdOptions.setCompressionMethod(compressão);

            imagem.save(caminhoExportação, psdOptions);

        }

        finally

        {

            imagem.dispose();

        }

        // Carrega o PSD salvo

        PsdImage imagem1 = (PsdImage)Image.load(caminhoExportação);

        try

        {

            // Converte o PSD salvo em uma imagem PNG em escala de cinza

            PngOptions pngOptions = new PngOptions();

            pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

            imagem1.save(caminhoExportaçãoPng, pngOptions); // aqui não deve haver exceção

        }

        finally

        {

            imagem1.dispose();

        }

    }

}

LocalScopeExtension $ = new LocalScopeExtension();

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

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

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

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

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

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

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

PSDJAVA-198. Suporte para Recurso de Camada de Ajuste de Inversão Nvrt

 // Um exemplo de encontrar o Recurso Nvrt de uma camada de ajuste de inversão.

String caminhoArquivoPsd = "CamadaDeAjusteDeInversão.psd";

NvrtResource recursoNvrt = null;

// Carrega um PSD pré-definido contendo uma camada de ajuste de inversão

PsdImage imagemPsd = (PsdImage)Image.load(caminhoArquivoPsd);

try

{

    // Tenta encontrar um recurso da camada de ajuste de inversão

    for (Layer camada : imagemPsd.getLayers())

    {

        if (camada instanceof InvertAdjustmentLayer)

        {

            for (LayerResource recursoCamada : camada.getResources())

            {

                if (recursoCamada instanceof NvrtResource)

                {

                    // O Recurso Nvrt é encontrado

                    recursoNvrt = (NvrtResource)recursoCamada;

                    break;

                }

            }

        }

    }

}

finally

{

    imagemPsd.dispose();

}

PSDJAVA-200. Suporte de Máscaras de Camada para Grupos de Camadas

 // Um exemplo de suporte de máscaras de camada para grupos de camadas. O programa carrega e salva o PSD

// em diferentes formatos de saída sem lançar exceções.

String arquivoOrigem = "psdnet595.psd";

String saídaPng = "saída.png";

String saídaPsd = "saída.psd";

// Carrega um PSD pré-definido contendo máscaras de camada para grupos de camadas

PsdImage entrada = (PsdImage)Image.load(arquivoOrigem);

try

{

    // Converte o PSD carregado para PNG

    entrada.save(saídaPng, new PngOptions());

    // Salva uma cópia do PSD

    entrada.save(saídaPsd);

}

finally

{

    entrada.dispose();

}

PSDJAVA-195. Correção ao salvar imagem PSD com modo de cor escala de cinza de 16 bits por canal para formato PSD de 16 bits por canal RGB

 // Um exemplo de converter um PSD de escala de cinza de 16 bits para um PSD RGB de 16 bits e depois para

// escala de cinza de 16 bits, mas como uma imagem raster.

String caminhoArquivoOrigem = "escalaDeCinza5x5.psd";

String caminhoArquivoExportação = "saídaRGB16Bits5x5.psd";

String caminhoExportaçãoPng = "saídaRGB16Bits5x5.png";

// Carrega um PSD de escala de cinza de 16 bits pré-definido

PsdImage imagem = (PsdImage)Image.load(caminhoArquivoOrigem);

try

{

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

    // Desenha uma borda interna cinza ao redor do perímetro da camada

    Graphics graphics = new Graphics(raster);

    int largura = raster.getWidth();

    int altura = raster.getHeight();

    Rectangle rect = new Rectangle(largura / 3, altura / 3, largura - (2 * (largura / 3)) - 1, altura - (2 * (altura / 3)) - 1);

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

    // Salva uma cópia do PSD com o modo de cor alterado para RBG

    PsdOptions psdOptions = new PsdOptions();

    psdOptions.setColorMode(ColorModes.Rgb);

    psdOptions.setChannelBitsCount((short)16);

    psdOptions.setChannelsCount((short)4);

    imagem.save(caminhoArquivoExportação, psdOptions);

}

finally

{

    imagem.dispose();

}

// Carrega o PSD salvo

PsdImage imagem1 = (PsdImage)Image.load(caminhoArquivoExportação);

try

{

    PngOptions pngOptions = new PngOptions();

    pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

    // Converte o PSD salvo em uma imagem PNG em escala de cinza

    imagem1.save(caminhoExportaçãoPng, pngOptions); // aqui não deve haver exceção

}

finally

{

    imagem1.dispose();

}

PSDJAVA-196. Correção ao salvar imagem PSD com modo de cor escala de cinza de 16 bits por canal para formato PSD de 8 bits por canal escala de cinza

 // Um exemplo de converter um PSD de escala de cinza de 16 bits para um de 8 bits e depois para

// uma imagem raster de 8 bits em escala de cinza.

String caminhoArquivoOrigem = "escalaDeCinza16Bits.psd";

String caminhoArquivoExportação = "saídaEscalaDeCinza16Bits.psd";

String caminhoExportaçãoPng = "saídaEscalaDeCinza16Bits.png";

// Carrega um PSD de escala de cinza de 16 bits pré-definido

PsdImage imagem = (PsdImage)Image.load(caminhoArquivoOrigem);

try

{

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

    // Desenha uma borda interna cinza ao redor do perímetro da camada

    Graphics graphics = new Graphics(raster);

    int largura = raster.getWidth();

    int altura = raster.getHeight();

    Rectangle rect = new Rectangle(largura / 3, altura / 3, largura - (2 * (largura / 3)) - 1, altura - (2 * (altura / 3)) - 1);

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

    // Salva uma cópia do PSD com a contagem de canais alterada para 8 bits

    PsdOptions psdOptions = new PsdOptions();

    psdOptions.setColorMode(ColorModes.Grayscale);

    psdOptions.setChannelBitsCount((short)8);

    psdOptions.setChannelsCount((short)2);

    imagem.save(caminhoArquivoExportação, psdOptions);

}

finally

{

    imagem.dispose();

}

// Carrega o PSD salvo

PsdImage imagem1 = (PsdImage)Image.load(caminhoArquivoExportação);

try

{

    PngOptions pngOptions = new PngOptions();

    pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);

    // Converte o PSD salvo em uma imagem PNG em escala de cinza

    imagem1.save(caminhoExportaçãoPng, pngOptions); // aqui não deve haver exceção

}

finally

{

    imagem1.dispose();

}

PSDJAVA-199. Alinhamento de Texto através de ITextPortion não funciona para idiomas da direita para a esquerda. O arquivo de saída fica danificado.

 // Um exemplo de alinhar uma camada de texto RTL através de ITextPortion. O programa modifica

// uma camada de texto RTL existente em um PSD carregado e salva uma cópia do documento modificado.

String nomeArquivoOrigem = "bidi.psd";

String nomeArquivoSaida = "bidiSaida.psd";

// Carrega um PSD pré-definido contendo uma camada de texto RTL

PsdImage imagem = (PsdImage)Image.load(nomeArquivoOrigem);

try

{

    // Obtém porções de texto da camada

    TextLayer camada = (TextLayer)imagem.getLayers()[2];

    ITextPortion[] porções = camada.getTextData().getItems();

    // Altera o alinhamento do texto

    porções[0].getParagraph().setJustification(2);

    // Aplica alterações à camada

    camada.getTextData().updateLayerData();

    // Salva uma cópia modificada do PSD

    imagem.save(nomeArquivoSaida);

}

finally

{

    imagem.dispose();

}

PSDJAVA-201. Exceção ao tentar abrir arquivo Psd específico com Cor Lab e 8 bits/canal

 // Um exemplo de suporte a documento Photoshop de 8 bits no modo de cor LAB.

String arquivoOrigem = "SemTítulo-1.psd";

String arquivoSaídaPsd = "saída.psd";

// Carrega um PSD de 8 bits específico no modo de cor LAB

PsdImage imagemPsd = (PsdImage)Image.load(arquivoOrigem);

try

{

    // Salva uma cópia do PSD carregado

    imagemPsd.save(arquivoSaídaPsd);

}

finally

{

    imagemPsd.dispose();

}