Aspose.PSD para .NET 18.8 - Notas de Lançamento
Chave | Resumo | Categoria |
---|---|---|
PSDNET-68 | Suporte da propriedade LayerCreationDateTime. | Recurso |
PSDNET-67 | Suporte do realce da cor da camada da folha. | Recurso |
PSDNET-66 | Capacidade de mesclar camadas uma com a outra. | Recurso |
PSDNET-65 | Adicionar suporte parcial da propriedade da Caixa Delimitadora da Camada de Texto. | Recurso |
PSDNET-64 | Adicionar suporte para IopaResource. | Recurso |
PSDNET-56 | Suporte de Efeitos de Camada para formato PSD. | Recurso |
PSDNET-55 | Suporte InterruptMonitor para .Net. | Recurso |
PSDNET-50 | Tornar possível a aplanar camadas. | Recurso |
PSDNET-49 | Adicionar a renderização da propriedade de opacidade de preenchimento em camadas. | Recurso |
PSDNET-43 | Implementar a renderização de Camada de Ajuste de Curvas. | Recurso |
PSDNET-42 | Adicionar suporte da Camada de Ajuste de Curvas. | Recurso |
PSDNET-41 | Implementar a renderização de Camada de Ajuste de Níveis. | Recurso |
PSDNET-40 | Adicionar suporte da Camada de Ajuste de Níveis. | Recurso |
PSDNET-37 | Adicionar suporte da Camada de Ajuste do Canal Mixer. | Recurso |
PSDNET-35 | Adicionar suporte da Camada de Ajuste de Matiz/Saturação. | Recurso |
PSDNET-34 | Implementar a renderização de Camada de Ajuste de Exposição para exportação. | Recurso |
PSDNET-31 | Adicionar suporte de renderização para exportação da Camada de Ajuste do CanalMixer. | Recurso |
PSDNET-26 | Adicionar suporte de Máscara de Recorte. | Recurso |
PSDNET-13 | Adicionar suporte da máscara de camada. | Recurso |
PSDNET-9 | Adicionar suporte da camada de ajuste Filtro de Foto. | Recurso |
PSDNET-8 | Adicionar suporte da camada de ajuste do Canal Mixer. | Recurso |
PSDNET-7 | Adicionar suporte da camada de ajuste de Exposição. | Recurso |
PSDNET-6 | Adicionar suporte da camada de ajuste de Brilho/Contraste. | Recurso |
PSDNET-5 | Adicionar suporte parcial de camadas de ajustes. | Recurso |
PSDNET-3 | Adicionar suporte para opção de Texto NoBreak do PSD. | Recurso |
PSDNET-2 | Capacidade de adicionar Camada de Texto em tempo de execução. | Recurso |
PSDNET-62 | O Codec TIFF não pode salvar imagem de canal de 16 bits. | Melhoria |
PSDNET-61 | Salvar imagem PSD produz cores de imagem inválidas. | Melhoria |
PSDNET-60 | Coordenada do canto superior esquerdo está incorreta na atualização. | Melhoria |
PSDNET-59 | Exceção ao atualizar camadas de texto. | Melhoria |
PSDNET-58 | Expor propriedade Codec de imagem JPEG2000 publicamente. | Melhoria |
PSDNET-57 | Corrigir opções de 24bpp para exportar para BMP. | Melhoria |
PSDNET-46 | Camada de ajuste ignorada para conversão PSD CMYK para TIFF ou JPG. | Melhoria |
Exemplos de Uso:
PSDNET-68 Suporte da propriedade LayerCreationDateTime
// Exemplo da propriedade LayerCreationDateTime
string nomeArquivoFonte = "UmaCamada.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camada = imagem.Layers[0];
var dataHoraCriacao = camada.LayerCreationDateTime;
var dataHoraEsperada = new DateTime(2018, 7, 17, 8, 57, 24, 769);
Assert.AreEqual(dataHoraEsperada, dataHoraCriacao);
var agora = DateTime.Now;
var camadaCriada = imagem.AddLevelsAdjustmentLayer();
// Verificar se a Data de Criação foi atualizada em novas camadas criadas
Assert.True(agora <= camadaCriada.LayerCreationDateTime);
}
PSDNET-67 Suporte do destaque da cor da camada da folha
// Exemplo de propriedade SheetColorHighlight
string nomeArquivoFonte = "ExemploFolhaCorDestaque.psd";
string caminhoExportacao = "ExemploFolhaCorDestaqueAlterada.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camada1 = imagem.Layers[0];
Assert.AreEqual(SheetColorHighlightEnum.Violet, camada1.SheetColorHighlight);
var camada2 = imagem.Layers[1];
Assert.AreEqual(SheetColorHighlightEnum.Orange, camada2.SheetColorHighlight);
camada1.SheetColorHighlight = SheetColorHighlightEnum.Yellow;
imagem.Save(caminhoExportacao);
}
PSDNET-66 Capacidade de mesclar camadas uma com a outra
// Exemplo de mesclar duas camadas
var arquivoFonte1 = "ExemploOpacidadePreenchimento.psd";
var arquivoFonte2 = "TresCamadasRegularesSemiTransparentes.psd";
var caminhoExportacao = "CamadasMescladasDeDoisPsdDiferentes.psd";
using (var imagem1 = (PsdImage)(Image.Load(arquivoFonte1)))
{
var camada1 = imagem1.Layers[1];
using (var imagem2 = (PsdImage)(Image.Load(arquivoFonte2)))
{
var camada2 = imagem2.Layers[0];
camada1.MergeLayerTo(camada2);
imagem2.Save(caminhoExportacao);
}
}
PSDNET-65 Adicionar suporte parcial da propriedade da Caixa Delimitadora da Camada de Texto
// Exemplo de Caixa Delimitadora de Texto
string nomeArquivoFonte = "CamadaComTexto.psd";
var tamanhoCorretoOptico = new Size(127, 45);
var tamanhoCorretoCaixaDelimitadora = new Size(172, 62);
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camadaTexto = (TextLayer)imagem.Layers[1];
// O tamanho da camada é o tamanho da área renderizada
var tamanhoOtico = camadaTexto.Size;
Assert.AreEqual(tamanhoCorretoOptico, tamanhoOtico);
// TextBoundBox é o tamanho máximo da camada para a Camada de Texto.
// Nesta área, PS tentará ajustar seu texto
var caixaDelimitadora = camadaTexto.TextBoundBox;
Assert.AreEqual(tamanhoCorretoCaixaDelimitadora, caixaDelimitadora);
}
PSDNET-64 Adicionar suporte para IopaResource
// Alterar a propriedade de opacidade de preenchimento pela mudança de IopaResource
string nomeArquivoFonte = "AmostraOpacidadePreenchimento.psd";
string caminhoExportacao = "AmostraOpacidadePreenchimentoAlterada.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camada = imagem.Layers[2];
var recursos = camada.Resources;
foreach (var recurso in recursos)
{
if (recurso is IopaResource)
{
var recursoIopa = (IopaResource)recurso;
recursoIopa.FillOpacity = 200;
}
}
imagem.Save(caminhoExportacao);
}
PSDNET-56 Suporte de Efeitos de Camada para formato PSD
using (
PsdImage imagem =
(PsdImage)
Aspose.PSD.Image.Load(
nomeArquivoFonte,
new Aspose.PSD.ImageLoadOptions.PsdLoadOptions()
{
LoadEffectsResource = true,
UseDiskForLoadEffectsResource = true
}))
{
imagem.Save(
saida,
new Aspose.PSD.ImageOptions.PngOptions()
{
ColorType =
Aspose.PSD.FileFormats.Png
.PngColorType
.TruecolorWithAlpha
});
}
PSDNET-55 Suporte InterruptMonitor para .Net
public void TesteInterruptMonitor(string diretorio, string diretorioSaida)
{
ImageOptionsBase opcoesSalvamento = new ImageOptions.PngOptions();
Multithreading.InterruptMonitor monitor = new Multithreading.InterruptMonitor();
SaveImageWorker trabalhador = new SaveImageWorker(diretorio + "grande.psb", diretorio + "grande_saida.png", opcoesSalvamento, monitor);
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(trabalhador.ThreadProc));
try
{
thread.Start();
// O tempo limite deve ser menor do que o tempo necessário para a conversão completa da imagem (sem interrupção).
System.Threading.Thread.Sleep(3000);
// Interromper o processo
monitor.Interrupt();
System.Console.WriteLine("Interrompendo a thread de salvamento #{0} em {1}", thread.ManagedThreadId, System.DateTime.Now);
// Aguarde a interrupção...
thread.Join();
}
finally
{
// Se o arquivo a ser excluído não existir, nenhuma exceção é lançada.
System.IO.File.Delete(diretorio + "grande_saida.png");
}
}
/// <summary>
/// Inicia a conversão da imagem e aguarda sua interrupção.
/// </summary>
private class SaveImageWorker
{
/// <summary>
/// O caminho para a imagem de entrada.
/// </summary>
private readonly string caminhoInput;
/// <summary>
/// O caminho para a imagem de saída.
/// </summary>
private readonly string caminhoOutput;
/// <summary>
/// O monitor de interrupção.
/// </summary>
private readonly Multithreading.InterruptMonitor monitor;
/// <summary>
/// As opções de salvamento.
/// </summary>
private readonly ImageOptionsBase opcoesSalvamento;
/// <summary>
/// Inicializa uma nova instância da classe <see cref="SaveImageWorker" />.
/// </summary>
/// <param name="caminhoInput">O caminho para a imagem de entrada.</param>
/// <param name="caminhoOutput">O caminho para a imagem de saída.</param>
/// <param name="opcoesSalvamento">As opções de salvamento.</param>
/// <param name="monitor">O monitor de interrupção.</param>
public SaveImageWorker(string caminhoInput, string caminhoOutput, ImageOptionsBase opcoesoesSalvamento, Multithreading.InterruptMonitor monitor)
{
this.caminhoInput = caminhoInput;
this.caminhoOutput = caminhoOutput;
this.opcoesSalvamento = opcoesSalvamento;
this.monitor = monitor;
}
/// <summary>
/// Tentar converter imagem de um formato para outro. Lida com a interrupção.
/// </summary>
public void ThreadProc()
{
using (Image imagem = Image.Load(this.caminhoInput))
{
Multithreading.InterruptMonitor.ThreadLocalInstance = this.monitor;
try
{
imagem.Save(this.caminhoOutput, this.opcoesSalvamento);
Assert.Fail("Interrupção esperada.");
}
catch (CoreExceptions.OperationInterruptedException e)
{
System.Console.WriteLine("A thread de salvamento #{0} foi concluída em {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, System.DateTime.Now);
System.Console.WriteLine(e);
}
catch (System.Exception e)
{
System.Console.WriteLine(e);
}
finally
{
Multithreading.InterruptMonitor.ThreadLocalInstance = null;
}
}
}
}
PSDNET-50 Tornar possível a aplanar camadas
// Aplanar todo o PSD
string nomeArquivoFonte = "TresCamadasRegularesSemiTransparentes.psd";
string caminhoExportacao = "TresCamadasRegularesSemiTransparentesAplanadas.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
imagem.FlattenImage();
imagem.Save(caminhoExportacao);
}
// Mesclar uma camada em outra
string nomeArquivoFonte = "TresCamadasRegularesSemiTransparentes.psd";
string caminhoExportacao = "TresCamadasRegularesSemiTransparentesAplanadasCamadaPorCamada.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camadaInferior = imagem.Layers[0];
var camadaMeio = imagem.Layers[1];
var camadaSuperior = imagem.Layers[2];
var camada1 = imagem.MergeLayers(camadaInferior, camadaMeio);
var camada2 = imagem.MergeLayers(camada1, camadaSuperior);
// Configurar camadas mescladas
imagem.Layers = new Layer[] { camada2 };
imagem.Save(caminhoExportacao);
}
PSDNET-49 Adicionar a renderização da propriedade de opacidade de preenchimento em camadas
// Alterar a propriedade de opacidade de preenchimento
string nomeArquivoFonte = "AmostraOpacidadePreenchimento.psd";
string caminhoExportacao = "AmostraOpacidadePreenchimentoAlterada.psd";
using (var imagem = (PsdImage)(Image.Load(nomeArquivoFonte)))
{
var camada = imagem.Layers[2];
camada.FillOpacity = 5;
imagem.Save(caminhoExportacao);
}
PSDNET-43 Implementar a renderização de Camada de Ajuste de Curvas
// Edição da camada de Curvas
string nomeArquivoFonte = "CamadaDeAjusteDeCurvas";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeCurvasAlterada";
string caminhoExportacaoPng = "CamadaDeAjusteDeCurvasAlterada";
for (int j = 1; j < 2; j++)
{
using (var imagem = LoadFile(nomeArquivoFonte + j.ToString() + ".psd"))
{
foreach (var camada in imagem.Layers)
{
if (camada is CurvesLayer)
{
var camadaCurvas = (CurvesLayer)camada;
if (camadaCurvas.IsDiscreteManagerUsed)
{
var gerenciador = (CurvesDiscreteManager)camadaCurvas.GetCurvesManager();
for (int i = 10; i < 50; i++)
{
gerenciador.SetValueInPosition(0, (byte)i, (byte)(15 + (i * 2)));
}
}
else
{
var gerenciador = (CurvesContinuousManager)camadaCurvas.GetCurvesManager();
gerenciador.AddCurvePoint(0, 50, 100);
gerenciador.AddCurvePoint(0, 150, 130);
}
}
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao + j.ToString() + ".psd");
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng + j.ToString() + ".png", opcoesSalvamento);
}
PSDNET-42 Adicionar suporte da Camada de Ajuste de Curvas
// Edição da camada de Curvas
string nomeArquivoFonte = "CamadaDeAjusteDeCurvas";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeCurvasAlterada";
for (int j = 1; j < 2; j++)
{
using (var imagem = LoadFile(nomeArquivoFonte + j.ToString() + ".psd"))
{
foreach (var camada in imagem.Layers)
{
if (camada is CurvesLayer)
{
var camadaCurvas = (CurvesLayer)camada;
if (camadaCurvas.IsDiscreteManagerUsed)
{
var gerenciador = (CurvesDiscreteManager)camadaCurvas.GetCurvesManager();
for (int i = 10; i < 50; i++)
{
gerenciador.SetValueInPosition(0, (byte)i, (byte)(15 + (i * 2)));
}
}
else
{
var gerenciador = (CurvesContinuousManager)camadaCurvas.GetCurvesManager();
gerenciador.AddCurvePoint(0, 50, 100);
gerenciador.AddCurvePoint(0, 150, 130);
}
}
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao + j.ToString() + ".psd");
}
PSDNET-41 Implementar a renderização de Camada de Ajuste de Níveis
// Edição da camada de Níveis
string nomeArquivoFonte = "CamadaDeAjusteDeNiveis.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeNiveisAlterada.psd";
string caminhoExportacaoPng = "CamadaDeAjusteDeNiveisAlterada.png";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is LevelsLayer)
{
var camadaNiveis = (LevelsLayer)camada;
var canal = camadaNiveis.GetChannel(0);
canal.InputMidtoneLevel = 2.0f;
canal.InputShadowLevel = 10;
canal.InputHighlightLevel = 230;
canal.OutputShadowLevel = 20;
canal.OutputHighlightLevel = 200;
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng, opcoesSalvamento);
}
PSDNET-40 Adicionar suporte da Camada de Ajuste de Níveis
// Edição da camada de Níveis
string nomeArquivoFonte = "CamadaDeAjusteDeNiveis.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeNiveisAlterada.psd";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is LevelsLayer)
{
var camadaNiveis = (LevelsLayer)camada;
var canal = camadaNiveis.GetChannel(0);
canal.InputMidtoneLevel = 2.0f;
canal.InputShadowLevel = 10;
canal.InputHighlightLevel = 230;
canal.OutputShadowLevel = 20;
canal.OutputHighlightLevel = 200;
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
}
PSDNET-37 Adicionar suporte da Camada de Ajuste do Canal Mixer
// Misturador de Canal Rgb
string nomeArquivoFonte = "CamadaDeAjusteDoMisturadorDeCanalRgb.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDoMisturadorDeCanalRgbAlterada.psd";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is RgbChannelMixerLayer)
{
var camadaRgb = (RgbChannelMixerLayer)camada;
camadaRgb.RedChannel.Blue = 100;
camadaRgb.BlueChannel.Green = -100;
camadaRgb.GreenChannel.Constant = 50;
}
}
imagem.Save(caminhoPsdAposAlteracao);
}
// Misturador de Canal Cmyk
string nomeArquivoFonte = "CamadaDeAjusteDoMisturadorDeCanalCmyk.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDoMisturadorDeCanalCmykAlterada.psd";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is CmykChannelMixerLayer)
{
var camadaCmyk = (CmykChannelMixerLayer)camada;
camadaCmyk.CyanChannel.Black = 20;
camadaCmyk.MagentaChannel.Yellow = 50;
camadaCmyk.YellowChannel.Cyan = -25;
camadaCmyk.BlackChannel.Yellow = 25;
}
}
imagem.Save(caminhoPsdAposAlteracao);
}
// Adicionando nova camada (Cmyk para este exemplo)
string nomeArquivoFonte = "CmykComAlfa.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDoMisturadorDeCanalCmykAlterada.psd";
using (var imagem = LoadFile(nomeArquivoFonte))
{
var novaCamada = imagem.AddChannelMixerAdjustmentLayer();
novaCamada.GetChannelByIndex(2).Constant = 50;
novaCamada.GetChannelByIndex(0).Constant = 50;
imagem.Save(caminhoPsdAposAlteracao);
}
PSDNET-35 Adicionar suporte da Camada de Ajuste de Matiz/Saturação
// Edição da camada de Matiz/Saturação
string nomeArquivoFonte = "CamadaDeAjusteDeMatizSaturacao.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeMatizSaturacaoAlterada.psd";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is HueSaturationLayer)
{
var camadaMatiz = (HueSaturationLayer)camada;
camadaMatiz.Hue = -25;
camadaMatiz.Saturation = -12;
camadaMatiz.Lightness = 67;
var faixaDeCor = camadaMatiz.GetRange(2);
faixaDeCor.Hue = -40;
faixaDeCor.Saturation = 50;
faixaDeCor.Lightness = -20;
faixaDeCor.MostLeftBorder = 300;
}
}
imagem.Save(caminhoPsdAposAlteracao);
}
PSDNET-34 Implementar a renderização de Camada de Ajuste de Exposição para exportação
// Edição da camada de Exposição
string nomeArquivoFonte = "CamadaDeAjusteDeExposicao.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDeExposicaoAlterada.psd";
string caminhoExportacaoPng = "CamadaDeAjusteDeExposicaoAlterada.png";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is ExposureLayer)
{
var camadaExp = (ExposureLayer)camada;
camadaExp.Exposure = 2;
camadaExp.Offset = -0.25f;
camadaExp.GammaCorrection = 0.5f;
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng, opcoesSalvamento);
}
// Adição da camada de Exposição
string nomeArquivoFonte = "ExemploFoto.psd";
string caminhoPsdAposAlteracao = "ExemploFotoAdicionadaExposicao.psd";
string caminhoExportacaoPng = "ExemploFotoAdicionadaExposicao.png";
using (PsdImage imagem = LoadFile(nomeArquivoFonte))
{
var novaCamada = imagem.AddExposureAdjustmentLayer();
novaCamada.Exposure = 2;
novaCamada.Offset = -0.25f;
novaCamada.GammaCorrection = 2f;
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng, opcoesSalvamento);
}
PSDNET-31 Adicionar suporte de renderização para exportação da Camada de Ajuste do CanalMixer
// Misturador de Canal Rgb
string nomeArquivoFonte = "CamadaDeAjusteDoMisturadorDeCanalRgb.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDoMisturadorDeCanalRgbAlterada.psd";
string caminhoExportacaoPng = "CamadaDeAjusteDoMisturadorDeCanalRgbAlterada.png";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is RgbChannelMixerLayer)
{
var camadaRgb = (RgbChannelMixerLayer)camada;
camadaRgb.RedChannel.Blue = 100;
camadaRgb.BlueChannel.Green = -100;
camadaRgb.GreenChannel.Constant = 50;
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng, opcoesSalvamento);
}
// Misturador de Canal Cmyk
string nomeArquivoFonte = "CamadaDeAjusteDoMisturadorDeCanalCmyk.psd";
string caminhoPsdAposAlteracao = "CamadaDeAjusteDoMisturadorDeCanalCmykAlterada.psd";
string caminhoExportacaoPng = "CamadaDeAjusteDoMisturadorDeCanalCmykAlterada.png";
using (var imagem = LoadFile(nomeArquivoFonte))
{
foreach (var camada in imagem.Layers)
{
if (camada is CmykChannelMixerLayer)
{
var camadaCmyk = (CmykChannelMixerLayer)camada;
camadaCmyk.CyanChannel.Black = 20;
camadaCmyk.MagentaChannel.Yellow = 50;
camadaCmyk.YellowChannel.Cyan = -25;
camadaCmyk.BlackChannel.Yellow = 25;
}
}
// Salvar PSD
imagem.Save(caminhoPsdAposAlteracao);
// Salvar PNG
var opcoesSalvamento = new PngOptions();
opcoesSalvamento.ColorType = PngColorType.TruecolorWithAlpha;
imagem.Save(caminhoExportacaoPng, opcoesSalvamento);
}
PSDNET-26 Adicionar suporte de Máscara de Recorte
// Exportar o psd com uma máscara de recorte complexa
string nomeArquivoFonte = "MascaraDeRecorteComplexa.psd";
string caminhoExportacao = "MascaraDeRecorteComplexa.png";
using (var imagem = LoadFile(nomeArquivoFonte))
{
// Exportar para PNG