Núcleo API
API de núcleo
PsdImage é o ponto de entrada para carregar, inspecionar e salvar documentos PSD/PSB. Ele estende a classe base abstrata Image, que declara Width, Height, Bounds, Load(), Save() e Dispose().
Carregando e Salvando Documentos
Image.Load() aceita um caminho de arquivo ou um Stream e retorna um Image; faça cast do resultado para PsdImage para acessar o restante da superfície do documento. PsdImage.Save() grava o documento de volta em um caminho de arquivo ou stream.
using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);Propriedades do Cabeçalho do Documento
PsdImage expõe o cabeçalho analisado como propriedades tipadas: Width, Height, BitsPerChannel, ColorMode, Version, Compression, Size e IsFlatten.
Console.WriteLine($"Width: {image.Width}, Height: {image.Height}");
Console.WriteLine($"ColorMode: {image.ColorMode}, Version: {image.Version}");
Console.WriteLine($"Compression: {image.Compression}, IsFlatten: {image.IsFlatten}");Recursos de Imagem
PsdImage.ImageResources retorna a matriz ResourceBlock[] analisada. Nesta compilação FOSS, ImageResources, GlobalLayerResources, ActiveLayer e HasTransparencyData podem ser lidos mas não reassinados — seus setters lançam NotSupportedException.
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}Dicas e Melhores Práticas
- Sempre converta o resultado de
Image.Load()paraPsdImagepara acessar membros específicos de PSD. - Envolva objetos dignos de
Dispose()em uma instruçãousing;PsdImageimplementaIDisposable. - Trate
ImageResources,GlobalLayerResources,ActiveLayereHasTransparencyDatacomo somente leitura, mesmo que eles exponham um setter. - Verifique
image.Layers.Lengthantes de indexar emimage.Layers— um documento achatado pode ter zero camadas.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
NotSupportedException ao definir ImageResources | Esta propriedade é somente leitura na compilação FOSS, apesar de ter um setter | Leia o valor; não tente reatribuir-lo |
Array image.Layers vazio em um documento achatado | IsFlatten está true e o documento não tem camadas analisadas | Verifique image.Layers.Length (ou image.IsFlatten) antes de indexar em image.Layers |
FAQ
Carregar um documento PSD decodifica os dados de pixel?
Não. PsdImage.Load() analisa o cabeçalho do documento, os metadados das camadas e os recursos sem decodificar ou renderizar os dados de pixel.
Posso converter um arquivo PSD para outro formato de imagem?
Não. Esta biblioteca carrega, inspeciona e salva documentos PSD/PSB apenas — ela não renderiza dados de pixel nem converte para outros formatos de imagem.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
Image.Load(string) / Image.Load(Stream) | Carrega um documento PSD ou PSB |
PsdImage.Save(string) / PsdImage.Save(Stream) | Salva o documento |
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlatten | Propriedades do cabeçalho do documento |
PsdImage.ImageResources | Blocos de recursos de imagem analisados (somente leitura) |