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

Chave Resumo Categoria
PSDNET-595 Suporte a Máscaras de Camada para Grupos de Camadas Recurso
PSDNET-201 Suporte ao progresso de conversão de documento Recurso
PSDNET-275 Suporte ao Recurso Nvrt (Recurso de Camada de Ajuste Inverter) Recurso
PSDNET-124 Suporte ao salvamento de Imagem PSD em Modo de Cor Grayscale com 16 bits por canal Recurso
PSDNET-589 Refatoração de Exemplos no GitHub Melhoria
PSDNET-587 Alinhamento de Texto através do ITextPortion não funciona para idiomas da direita para a esquerda. O arquivo de saída fica danificado. Erro
PSDNET-604 Exceção ao tentar abrir um arquivo Psd específico com Cor Lab e 8 bits/canal Erro
PSDNET-598 Correção ao salvar imagem PSD com Cor Grayscale de 16 bits por canal para formato PSD Grayscale de 8 bits por canal Erro
PSDNET-599 Correção ao salvar imagem PSD com Cor Grayscale de 16 bits por canal para formato PSD RGB de 16 bits por canal Erro

Mudanças na API Pública

APIs Adicionadas:

  • Nenhuma

APIs Removidas:

  • Nenhuma

Exemplos de Uso:

PSDNET-595. Suporte a Máscaras de Camada para Grupos de Camadas

 string arquivoFonte = "psdnet595.psd";

string saidaPng = "saida.png";

string saidaPsd = "saida.psd";

using (var entrada = (PsdImage)Image.Load(arquivoFonte))

{

     entrada.Save(saidaPng, new PngOptions());

     entrada.Save(saidaPsd);

}

PSDNET-201. Suporte ao progresso de conversão de documento

 string caminhoArquivoFonte = "Apple.psd";

Stream fluxoSaida = new MemoryStream();

ProgressEventHandler manipuladorProgressoLocal = delegate(ProgressEventHandlerInfo informacaoProgresso)

{

      string mensagem = string.Format(

           "{0} {1}: {2} de {3}",

           informacaoProgresso.Descrição,

           informacaoProgresso.TipoEvento,

           informacaoProgresso.Valor,

           informacaoProgresso.ValorMáximo);

      Console.WriteLine(mensagem);

};

Console.WriteLine("---------- Carregando Apple.psd ----------");

var opçõesCarregamento = new PsdLoadOptions() { ProgressEventHandler = manipuladorProgressoLocal };

using (PsdImage imagem = (PsdImage)Image.Load(caminhoArquivoFonte, opçõesCarregamento))

{

      Console.WriteLine("---------- Salvando Apple.psd no formato PNG ----------");

      imagem.Save(

           fluxoSaida,

           new PngOptions()

           {

                 ColorType = PngColorType.Truecolor, ProgressEventHandler = manipuladorProgressoLocal

           });

      Console.WriteLine("---------- Salvando Apple.psd no formato PSD ----------");

      imagem.Save(

           fluxoSaida,

           new PsdOptions()

           {

                 ColorMode = ColorModes.Rgb,

                 ChannelsCount = 4,

                 ProgressEventHandler = manipuladorProgressoLocal

           });

}

PSDNET-275. Suporte ao Recurso Nvrt (Recurso de Camada de Ajuste Inverter)

 using (var imagemPsd = (PsdImage)Image.Load("InvertAdjustmentLayer.psd"))

{

      foreach (var camada in imagemPsd.Layers)

      {

           if (camada is InvertAdjustmentLayer)

           {

                 foreach (var recursoCamada in camada.Resources)

                 {

                      if (recursoCamada is NvrtResource)

                      {

                           // O NvrtResource é suportado.

                           var recurso = (NvrtResource)recursoCamada;

                           break;

                      }

                 }

           }

      }

}

PSDNET-124. Correção ao salvar imagem PSD com Cor Grayscale de 16 bits por canal para formato PSD Grayscale de 8 bits por canal

 void SalvarParaPsdDepoisCarregarESalvarParaPng(

    string arquivo,

    ColorModes modoCor,

    short qtdBitsCanal,

    short qtdCanales,

    CompressionMethod compressão,

    int númeroCamada)

{

    string caminhoArquivo = arquivo + ".psd";

    string posfixo = modoCor.ToString() + qtdBitsCanal + "_" + qtdCanales + "_" + compressão;

    string caminhoExportação = @"Saida\" + arquivo + posfixo + ".psd";

    PsdOptions opçõesPsd = new PsdOptions()

    {

        ColorMode = modoCor,

        ChannelBitsCount = qtdBitsCanal,

        ChannelsCount = qtdCanales,

        CompressionMethod = compressão

    };

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

    {

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

        Aspose.PSD.Graphics gráficos = new Graphics(raster);

        int largura = raster.Width;

        int altura = raster.Height;

        Rectangle retângulo = new Rectangle(

            largura / 3,

            altura / 3,

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

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

        gráficos.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), retângulo);

        imagem.Save(caminhoExportação, opçõesPsd);

    }

    string caminhoExportarPng = Path.ChangeExtension(caminhoExportação, "png");

    using (PsdImage imagem = (PsdImage)Image.Load(caminhoExportação))

    {

        // Aqui não deve ocorrer exceção.

        imagem.Save(caminhoExportarPng, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });

    }

}

SalvarParaPsdDepoisCarregarESalvarParaPng("grayscale5x5", ColorModes.Cmyk, 16, 5, CompressionMethod.RLE, 0);

SalvarParaPsdDepoisCarregarESalvarParaPng("argb16bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, 0);

SalvarParaPsdDepoisCarregarESalvarParaPng("argb16bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);

SalvarParaPsdDepoisCarregarESalvarParaPng("argb8bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, 0);

SalvarParaPsdDepoisCarregarESalvarParaPng("argb8bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);

SalvarParaPsdDepoisCarregarESalvarParaPng("cmyk16bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);

SalvarParaPsdDepoisCarregarESalvarParaPng("index8bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);

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

 string nomeArquivoFonte = "bidi.psd";

string nomeArquivoSaida = "bidiSaida.psd";

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

{

    var camada = (TextLayer)imagem.Layers[2];

    var porções = camada.TextData.Items;

    porções[0].Paragraph.Justificação = 2;

    camada.TextData.UpdateLayerData();

    imagem.Save(nomeArquivoSaida);

}

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

 string arquivoFonte = "Untitled-1.psd";

string arquivoSaidaPsd = "saida.psd";

using (var imagemPsd = (PsdImage)Image.Load(arquivoFonte))

{

    imagemPsd.Save(arquivoSaidaPsd);

}

// Arquivo LAB carregado e salvo sem lançar exceções.

PSDNET-598. Correção ao salvar imagem PSD com Cor Grayscale de 16 bits por canal para formato PSD Grayscale de 8 bits por canal

 string nomeArquivoFonte = "grayscale16bit.psd";

string nomeArquivoExportação = "grayscale16bit_saida.psd";

PsdOptions opçõesPsd = new PsdOptions()

{

    ColorMode = ColorModes.Grayscale,

    ChannelBitsCount = 8,

    ChannelsCount = 2

};

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

{

    RasterCachedImage raster = imagem.Layers[0];

    Aspose.PSD.Graphics gráficos = new Graphics(raster);

    int largura = raster.Width;

    int altura = raster.Height;

    Rectangle retângulo = new Rectangle(largura / 3, altura / 3, largura - (2 * (largura / 3)) - 1, altura - (2 * (altura / 3)) - 1);

    gráficos.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), retângulo);

    imagem.Save(nomeArquivoExportação, opçõesPsd);

}

string caminhoExportarPng = Path.ChangeExtension(nomeArquivoExportação, "png");

using (PsdImage imagem = (PsdImage)Image.Load(nomeArquivoExportação))

{

    // Aqui não deve ocorrer exceção.

    imagem.Save(caminhoExportarPng, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });

}

PSDNET-599. Correção ao salvar imagem PSD com Cor Grayscale de 16 bits por canal para formato PSD RGB de 16 bits por canal

 string nomeArquivoFonte = "grayscale16bit.psd";

string nomeArquivoExportação = "grayscale16bit_saida.psd";

PsdOptions opçõesPsd = new PsdOptions()

{

    ColorMode = ColorModes.Rgb,

    ChannelBitsCount = 8,

    ChannelsCount = 4

};

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

{

    RasterCachedImage raster = imagem.Layers[0];

    Aspose.PSD.Graphics gráficos = new Graphics(raster);

    int largura = raster.Width;

    int altura = raster.Height;

    Rectangle retângulo = new Rectangle(largura / 3, altura / 3, largura - (2 * (largura / 3)) - 1, altura - (2 * (altura / 3)) - 1);

    gráficos.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), retângulo);

    imagem.Save(nomeArquivoExportação, opçõesPsd);

}

string caminhoExportarPng = Path.ChangeExtension(nomeArquivoExportação, "png");

using (PsdImage imagem = (PsdImage)Image.Load(nomeArquivoExportação))

{

    // Aqui não deve ocorrer exceção.

    imagem.Save(caminhoExportarPng, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });

}