Aspose.PSD para .NET 19.10 - Notas de Lançamento

Chave Sumário Categoria
PSDNET-207 Suporte à Camada de Ajuste de Equilíbrio de Cor Recurso
PSDNET-145 Suporte à Camada de Inversão de Cores Recurso
PSDNET-139 Implementar Bicubic Resampler Recurso
PSDNET-169 Adicionar suporte à exportação de PSD para PDF com Máscara de Recorte Recurso
PSDNET-168 Adicionar suporte à exportação de PSD para PDF com Camadas de Ajuste Recurso
PSDNET-179 Problema Obter Efeito DropShadowEffect da Camada Melhoria
PSDNET-203 Quando o texto é atualizado com caracteres / (barra inclinada), o arquivo não pode ser aberto no Photoshop Erro
PSDNET-199 Arquivo PSD não pode ser salvo quando a camada de texto contém apenas quebra de linha Erro
PSDNET-185 Tamanho de fonte errado extraído Erro

Mudanças na API Pública

APIs Adicionadas:

  • T: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.PreserveLuminosity
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.ShadowsCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.ShadowsMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.ShadowsYellowBlueBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.MidtonesCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.MidtonesMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.MidtonesYellowBlueBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.HighlightsCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.HighlightsMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.ColorBalanceAdjustmentLayer.HighlightsYellowBlueBalance
  • T: Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.InvertAdjustmentLayer
  • T: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource
  • M: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.#ctor
  • M: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • F: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.TypeToolKey
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.Key
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.Length
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.PsdVersion
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.PreserveLuminosity
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.ShadowsCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.ShadowsMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.ShadowsYellowBlueBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.MidtonesCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.MidtonesMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.MidtonesYellowBlueBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.HighlightsCyanRedBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.HighlightsMagentaGreenBalance
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlncResource.HighlightsYellowBlueBalance
  • T: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource
  • M: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.#ctor
  • M: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.#ctor(System.Byte[])
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.Key
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.Length
  • P: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.PsdVersion
  • M: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.Save(Aspose.PSD.StreamContainer,System.Int32)
  • F: Aspose.PSD.FileFormats.Psd.Layers.LayerResources.NvrtResource.TypeToolKey
  • P: Aspose.PSD.FileFormats.Psd.Layers.TextLayer.TransformMatrix
  • P: Aspose.PSD.FileFormats.Psd.PsdImage.GlobalAngle
  • M: Aspose.PSD.FileFormats.Psd.PsdImage.AddColorBalanceAdjustmentLayer
  • M: Aspose.PSD.FileFormats.Psd.PsdImage.AddInvertAdjustmentLayer
  • F: Aspose.PSD.ResizeType.CatmullRom
  • F: Aspose.PSD.ResizeType.CubicConvolution
  • F: Aspose.PSD.ResizeType.CubicBSpline
  • F: Aspose.PSD.ResizeType.Mitchell
  • F: Aspose.PSD.ResizeType.SinC
  • F: Aspose.PSD.ResizeType.Bell

APIs Removidas:

  • Nenhuma

Exemplos de Uso:

PSDNET-207. Suporte à Camada de Ajuste de Equilíbrio de Cor

            var caminhoArquivo = "ColorBalance.psd";

            var caminhoSaida = "ColorBalance_out.psd";

            using (var im = (PsdImage)Image.Load(caminhoArquivo))

            {

                foreach (var camada in im.Layers)

                {

                    var camadaEquilibrioCor = camada as ColorBalanceAdjustmentLayer;

                    if (camadaEquilibrioCor != null)

                    {

                        camadaEquilibrioCor.ShadowsCyanRedBalance = 30;

                        camadaEquilibrioCor.ShadowsMagentaGreenBalance = -15;

                        camadaEquilibrioCor.ShadowsYellowBlueBalance = 40;

                        camadaEquilibrioCor.MidtonesCyanRedBalance = -90;

                        camadaEquilibrioCor.MidtonesMagentaGreenBalance = -25;

                        camadaEquilibrioCor.MidtonesYellowBlueBalance = 20;

                        camadaEquilibrioCor.HighlightsCyanRedBalance = -30;

                        camadaEquilibrioCor.HighlightsMagentaGreenBalance = 67;

                        camadaEquilibrioCor.HighlightsYellowBlueBalance = -95;

                        camadaEquilibrioCor.PreserveLuminosity = true;

                    }

                }

                im.Save(caminhoSaida);

            }

PSDNET-145. Suporte à Camada de Inversão de Cores

            var caminhoArquivo = "InvertStripes_before.psd";

            var caminhoSaida = "InvertStripes_after.psd";

            using (var im = (PsdImage)Image.Load(caminhoArquivo))

            {

                im.AddInvertAdjustmentLayer();

                im.Save(caminhoSaida);

            }

PSDNET-139. Implementar Bicubic Resampler

             string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerCubicConvolutionStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.CubicConvolution);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

            string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerCatmullRomStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.CatmullRom);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

            string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerMitchellStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.Mitchell);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

            string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerCubicBSplineStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.CubicBSpline);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

            string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerSinCStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.SinC);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

            string arquivoFonte = "amostra.psd";

            string nomeDestino = "ResamplerBellStripes_after.psd";

            // Carregar uma imagem existente em uma instância da classe PsdImage

            using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))

            {

                imagem.Resize(300, 300, ResizeType.Bell);

                imagem.Save(nomeDestino, new PsdOptions(imagem));

            }

PSDNET-169. Adicionar suporte à exportação de PSD para PDF com Máscara de Recorte

     using (PsdImage imagem = (PsdImage)Image.Load("clip.psd"))

    {

      imagem.Save("output.pdf", new PdfOptions());

    }

PSDNET-168. Adicionar suporte à exportação de PSD para PDF com Camadas de Ajuste

      using (PsdImage imagem = (PsdImage)Image.Load("exemplo.psd"))

    {

      imagem.Save("documento.pdf", new PdfOptions());

    }

PSDNET-203. Quando o texto é atualizado com / (barra inclinada), o arquivo não pode ser aberto no Photoshop

         var imagemPsd = (PsdImage)imagem;

        var camadas = imagemPsd.Layers;

        for (var indice = camadas.Length - 1; indice >= 0; indice--)

        {

            var camada = camadas[indice];

            if (!(camada is TextLayer)) continue;

            var camadaTexto = (TextLayer)camada;

            camadaTexto.UpdateText("/");

        }

        var opcoesImagem = new PsdOptions(imagemPsd);

        var nomeArquivo = Path.GetFileName(caminhoArquivo);

        var caminhoSaidaArquivo = Path.GetDirectoryName(caminhoArquivo) + "\\alvo_" + nomeArquivo;

        imagemPsd.Save(caminhoSaidaArquivo, opcoesImagem);

PSDNET-199. Arquivo PSD não pode ser salvo quando a camada de texto contém apenas quebra de linha

 string caminhoArquivo = "testLineBreaks2.psd";

string caminhoSaida = "testLineBreaks2_modificado.psd";

var novoTexto = "\r";

        using (var imagem = Image.Load(caminhoArquivo))

        {

            var imagemPsd = imagem as PsdImage;

            if (imagem == null)

            {

                return;

            }

            var camadas = imagemPsd.Layers;

            for (var indice = camadas.Length - 1; indice >= 0; indice--)

            {

                var camada = camadas[indice] as TextLayer;

                if (camada == null)

                {

                    continue;

                }

                camada.UpdateText(novoTexto);

            }

            var opcoesImagem = new PsdOptions(imagemPsd);

            imagemPsd.Save(caminhoSaida, opcoesImagem);

        }

PSDNET-185. Tamanho de fonte errado extraído

             // Tamanho de fonte errado extraído

            string caminhoArquivo = "直播+电商.psd";

            var tolerancia = 0.001;

            using (var imagem = Image.Load(caminhoArquivo))

            {

                int indiceCamada = 22;

                // API antiga (Usando o tamanho da fonte do primeiro parágrafo)

                PsdImage imagemPsd = imagem as PsdImage;

                double[] matriz = ((TextLayer)imagemPsd.Layers[indiceCamada]).TransformMatrix;

                double tamanhoBaseFonte = ((TextLayer)imagemPsd.Layers[indiceCamada]).Font.Size;

                double tamanhoFonte = matriz[0] * tamanhoBaseFonte;

                // Verificando o tamanho base da fonte

                if (Math.Abs(100.0 - tamanhoBaseFonte) > tolerancia)

                {

                    throw new Exception("O tamanho da fonte foi lido incorretamente");

                }

                // Verificando o tamanho real da fonte

                if (Math.Abs(88.425 - tamanhoFonte) > tolerancia)

                {

                    throw new Exception("A matriz de transformação foi lida incorretamente");

                }

                // Nova API (Uma camada de texto pode conter qualquer quantidade de tamanhos de fonte)

                ITextPortion[] porções = ((TextLayer)imagemPsd.Layers[indiceCamada]).TextData.Items;

                ITextStyle estilo = porções[0].Style;

                double tamanhoFonteDaPorção = matriz[0] * estilo.FontSize;

                // Verificando o tamanho da fonte da porção base

                if (Math.Abs(100.0 - estilo.FontSize) > tolerancia)

                {

                    throw new Exception("O tamanho da fonte foi lido incorretamente");

                }

                // Verificando o tamanho real da fonte da porção

                if (Math.Abs(88.425 - tamanhoFonteDaPorção) > tolerancia)

                {

                    throw new Exception("A matriz de transformação foi lida incorretamente");

                }

            }

PSDNET-179. Problema Obter Efeito de Sombra na Camada

       // Quando a propriedade DropShadowEffect.UseGlobalLight é 'true', então o objeto DropShadowEffect utiliza o valor do ângulo da propriedade PsdImage.GlobalAngle.

		using (PsdImage imagem = (PsdImage)Image.Load("4.psd"))

		{

    		imagem.GlobalAngle = 30;

    		imagem.Save("output.psd");

		}