Como Trabalhar com o Aspose.PSD FOSS Core API em .NET
Aspose.PSD FOSS para .NET carrega e inspeciona a estrutura de documento PSD/PSB através de PsdImage, uma subclasse de Image. Este artigo cobre o carregamento de um documento, a leitura de seu cabeçalho e recursos de imagem, e a gravação de volta no disco.
Guia passo a passo
Passo 1: Instale o pacote
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildPasso 2: Importe as classes necessárias
using Aspose.PSD.FileFormats.Psd;Passo 3: Carregue um documento PSD/PSB
PsdImage.Load abre um documento a partir de um caminho de arquivo ou de um fluxo:
using var image = PsdImage.Load("input.psd");Etapa 4: Inspecionar o Cabeçalho do Documento
PsdImage expõe os campos de cabeçalho lidos do documento analisado: Width, Height, BitsPerChannel, ColorMode (um valor ColorModes), e Compression (um valor CompressionMethod):
Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}"); // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");Os valores de ColorModes incluem Bitmap, Grayscale, Indexed, Rgb e Cmyk, entre outros (Multichannel, Duotone, Lab). Os valores de CompressionMethod são Raw, RLE, ZipWithoutPrediction e uma variante ZIP-com-predição.
Etapa 5: Ler Blocos de Recursos de Imagem
ImageResources retorna as entradas ResourceBlock analisadas do documento. Cada bloco expõe ID, Name e Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources é somente leitura nesta compilação FOSS — atribuí-lo gera uma exceção NotSupportedException (veja Limitações Conhecidas em FAQ).
Etapa 6: Salvar o Documento
image.Save("output.psd");Problemas Comuns e Soluções
PsdLoadException ao carregar um arquivo. A entrada não é um documento PSD/PSB válido, ou seu cabeçalho falhou na validação. Confirme que o arquivo é um verdadeiro arquivo PSD/PSB antes de carregá-lo.
NotSupportedException ao definir ImageResources or GlobalLayerResources. Esses definidores não são suportados nesta compilação FOSS. Trate ImageResources como somente leitura.
ColorMode or Compression é impresso como um valor numérico em vez de um nome. Faça cast da propriedade para o seu tipo enum explicitamente, ou use .ToString(), para obter o nome legível (ColorModes.Rgb, não 3).
Perguntas Frequentes
Posso carregar um arquivo PSD a partir de um stream em vez de um caminho de arquivo?
Sim — PsdImage.Load tem uma sobrecarga que aceita um Stream.
O ImageResources inclui dados de camada?
Não. ImageResources contém blocos de recurso ao nível do documento (analisados a partir da seção de recursos de imagem do PSD). Dados ao nível da camada são lidos através de PsdImage.Layers — veja Trabalhando com Camadas.
É PsdImage.Version a versão do formato de arquivo PSD?
Não. PsdImage.Version relata um número de versão interno compatível com Aspose.PSD API (atualmente 6) — não tem relação com se o arquivo carregado é PSD ou PSB.