Chave Resumo Categoria
PSDJAVA-538 Suporte à direção do texto vertical Recurso
PSDJAVA-542 Usar configurações de traço do recurso vstk em renderização de traço de forma Recurso
PSDJAVA-540 Implementar renderização da área interna de formas de traço Recurso
PSDJAVA-541 Não redesenhar camada de forma se não tiver sido alterada Recurso
PSDJAVA-545 [Formato AI] Adicionar suporte para leitura de Cabeçalho de Arquivos AI baseados em PDF Recurso
PSDJAVA-546 Várias maneiras de definir a resolução do arquivo Psd não funcionam Bug
PSDJAVA-547 FontSettings.SetFontsFolders não funciona ou Aspose.PSD usa a fonte incorreta Bug
PSDJAVA-548 Regressão. Corrigir exceção de referência nula ao salvar PsdImage quando tem camada de forma Bug

Mudanças na API Pública

APIs Adicionadas:

APIs Removidas:

Exemplos de Uso:

** PSDJAVA-538. Suporte à direção do texto vertical**

    
    String arquivoFonte = "src/main/resources/692_lt1.psd";
    String arquivoSaida = "src/main/resources/692_output.png";
    String pastaFontes = "src/main/resources/692_Fonts";

        List<String> pastasFonte = new List<>(FontSettings.getFontsFolders());
        pastasFonte.add(pastaFontes);
        FontSettings.setFontsFolders(pastasFonte.toArray(new String[0]), true);

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

            psdImage.save(arquivoSaida, opcoesPng);
        }

** PSDJAVA-542. Usar configurações de traço do recurso vstk em renderização de traço de forma**

    public static void main(String[] args) {
        String arquivoFonte = "src/main/resources/StrokeShapeTest.psd";
        String arquivoSaidaPsd = "src/main/resources/StrokeShapeTest.out.psd";
        String arquivoSaidaPng = "src/main/resources/StrokeShapeTest.out.png";

        try (PsdImage imagem = (PsdImage) Image.load(arquivoFonte)) {
            Layer camada = imagem.getLayers()[1];
            ShapeLayer camadaForma = (ShapeLayer) imagem.getLayers()[1];
            ColorFillSettings configuracoesPreenchimento = (ColorFillSettings) camadaForma.getFill();
            configuracoesPreenchimento.setColor(Color.getGreenYellow());
            camadaForma.update();

            ShapeLayer camadaForma2 = (ShapeLayer) imagem.getLayers()[3];
            GradientFillSettings configuracoesGradiente = (GradientFillSettings) camadaForma2.getFill();
            configuracoesGradiente.setDither(true);
            configuracoesGradiente.setReverse(true);
            configuracoesGradiente.setAlignWithLayer(false);
            configuracoesGradiente.setAngle(20);
            configuracoesGradiente.setScale(50);
            configuracoesGradiente.getColorPoints()[0].setLocation(100);
            configuracoesGradiente.getColorPoints()[1].setLocation(4000);
            configuracoesGradiente.getTransparencyPoints()[0].setLocation(200);
            configuracoesGradiente.getTransparencyPoints()[1].setLocation(3800);
            configuracoesGradiente.getTransparencyPoints()[0].setOpacity(90);
            configuracoesGradiente.getTransparencyPoints()[1].setOpacity(10);
            camadaForma2.update();

            ShapeLayer camadaForma3 = (ShapeLayer) imagem.getLayers()[5];
            StrokeSettings configuracoesTraço = (StrokeSettings) camadaForma3.getStroke();
            configuracoesTraço.setSize(15);
            ColorFillSettings configuracoesPreenchimentoT = (ColorFillSettings) configuracoesTraço.getFill();
            configuracoesPreenchimentoT.setColor(Color.getGreenYellow());
            camadaForma3.update();

            imagem.save(arquivoSaidaPsd);
            imagem.save(arquivoSaidaPng, new PngOptions());
        }

        // Verificar dados alterados.
        try (PsdImage imagem = (PsdImage) Image.load(arquivoSaidaPsd)) {
            ShapeLayer camadaForma = (ShapeLayer) imagem.getLayers()[1];
            ColorFillSettings configuracoesPreenchimento = (ColorFillSettings) camadaForma.getFill();
            assertAreEqual(Color.getGreenYellow(), configuracoesPreenchimento.getColor());

            ShapeLayer camadaForma2 = (ShapeLayer) imagem.getLayers()[3];
            GradientFillSettings configuracoesGradiente = (GradientFillSettings) camadaForma2.getFill();
            assertAreEqual(true, configuracoesGradiente.getDither());
            assertAreEqual(true, configuracoesGradiente.getReverse());
            assertAreEqual(false, configuracoesGradiente.getAlignWithLayer());
            assertAreEqual(20.0, configuracoesGradiente.getAngle());
            assertAreEqual(50, configuracoesGradiente.getScale());
            assertAreEqual(100, configuracoesGradiente.getColorPoints()[0].getLocation());
            assertAreEqual(4000, configuracoesGradiente.getColorPoints()[1].getLocation());
            assertAreEqual(200, configuracoesGradiente.getTransparencyPoints()[0].getLocation());
            assertAreEqual(3800, configuracoesGradiente.getTransparencyPoints()[1].getLocation());
            assertAreEqual(90.0, configuracoesGradiente.getTransparencyPoints()[0].getOpacity());
            assertAreEqual(10.0, configuracoesGradiente.getTransparencyPoints()[1].getOpacity());

            ShapeLayer camadaForma3 = (ShapeLayer) imagem.getLayers()[5];
            StrokeSettings configuracoesTraço = (StrokeSettings) camadaForma3.getStroke();
            ColorFillSettings configuracoesPreenchimentoT = (ColorFillSettings) configuracoesTraço.getFill();
            assertAreEqual(15.0, configuracoesTraço.getSize());
            assertAreEqual(Color.getGreenYellow(), configuracoesPreenchimentoT.getColor());
        }
    }

    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-540. Implementar renderização da área interna de formas de traço**

    public static void main(String[] args) {
        String arquivoFonte = "src/main/resources/StrokeShapeTest.psd";
        String arquivoSaidaPsd = "src/main/resources/StrokeShapeTest.out.psd";
        String arquivoSaidaPng = "src/main/resources/StrokeShapeTest.out.png";

        try (PsdImage imagem = (PsdImage) Image.load(arquivoFonte)) {
            Layer camada = imagem.getLayers()[1];
            ShapeLayer camadaForma = (ShapeLayer) imagem.getLayers()[1];
            ColorFillSettings configuracoesPreenchimento = (ColorFillSettings) camadaForma.getFill();
            configuracoesPreenchimento.setColor(Color.getGreenYellow());
            camadaForma.update();

            ShapeLayer camadaForma2 = (ShapeLayer) imagem.getLayers()[3];
            GradientFillSettings configuracoesGradiente = (GradientFillSettings) camadaForma2.getFill();
            configuracoesGradiente.setDither(true);
            configuracoesGradiente.setReverse(true);
            configuracoesGradiente.setAlignWithLayer(false);
            configuracoesGradiente.setAngle(20);
            configuracoesGradiente.setScale(50);
            configuracoesGradiente.getColorPoints()[0].setLocation(100);
            configuracoesGradiente.getColorPoints()[1].setLocation(4000);
            configuracoesGradiente.getTransparencyPoints()[0].setLocation(200);
            configuracoesGradiente.getTransparencyPoints()[1].setLocation(3800);
            configuracoesGradiente.getTransparencyPoints()[0].setOpacity(90);
            configuracoesGradiente.getTransparencyPoints()[1].setOpacity(10);
            camadaForma2.update();

            ShapeLayer camadaForma3 = (ShapeLayer) imagem.getLayers()[5];
            StrokeSettings configuracoesTraço = (StrokeSettings) camadaForma3.getStroke();
            configuracoesTraço.setSize(15);
            ColorFillSettings configuracoesPreenchimentoT = (ColorFillSettings) configuracoesTraço.getFill();
            configuracoesPreenchimentoT.setColor(Color.getGreenYellow());
            camadaForma3.update();

            imagem.save(arquivoSaidaPsd);
            imagem.save(arquivoSaidaPng, new PngOptions());
        }

        // Verificar dados alterados.
        try (PsdImage imagem = (PsdImage) Image.load(arquivoSaidaPsd)) {
            ShapeLayer camadaForma = (ShapeLayer) imagem.getLayers()[1];
            ColorFillSettings configuracoesPreenchimento = (ColorFillSettings) camadaForma.getFill();
            assertAreEqual(Color.getGreenYellow(), configuracoesPreenchimento.getColor());

            ShapeLayer camadaForma2 = (ShapeLayer) imagem.getLayers()[3];
            GradientFillSettings configuracoesGradiente = (GradientFillSettings) camadaForma2.getFill();
            assertAreEqual(true, configuracoesGradiente.getDither());
            assertAreEqual(true, configuracoesGradiente.getReverse());
            assertAreEqual(false, configuracoesGradiente.getAlignWithLayer());
            assertAreEqual(20.0, configuracoesGradiente.getAngle());
            assertAreEqual(50, configuracoesGradiente.getScale());
            assertAreEqual(100, configuracoesGradiente.getColorPoints()[0].getLocation());
            assertAreEqual(4000, configuracoesGradiente.getColorPoints()[1].getLocation());
            assertAreEqual(200, configuracoesGradiente.getTransparencyPoints()[0].getLocation());
            assertAreEqual(3800, configuracoesGradiente.getTransparencyPoints()[1].getLocation());
            assertAreEqual(90.0, configuracoesGradiente.getTransparencyPoints()[0].getOpacity());
            assertAreEqual(10.0, configuracoesGradiente.getTransparencyPoints()[1].getOpacity());

            ShapeLayer camadaForma3 = (ShapeLayer) imagem.getLayers()[5];
            StrokeSettings configuracoesTraço = (StrokeSettings) camadaForma3.getStroke();
            ColorFillSettings configuracoesPreenchimentoT = (ColorFillSettings) configuracoesTraço.getFill();
            assertAreEqual(15.0, configuracoesTraço.getSize());
            assertAreEqual(Color.getGreenYellow(), configuracoesPreenchimentoT.getColor());
        }
    }

    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-541. Não redesenhar camada de forma se não tiver sido alterada**