Introdução
Aspose.PSD FOSS para .NET carrega, inspeciona e salva documentos PSD e PSB por meio de um pequeno conjunto de classes. Este post analisa partes do núcleo API que o post introdutório não abordou em profundidade: a relação de herança Image/PsdImage, os tipos de valor de geometria usados em toda a biblioteca e como a biblioteca relata erros de carregamento e gravação.
O que está incluído
Imagem e PsdImage
Image é a classe base abstrata e expõe Width, Height, Bounds, Load(), Save() e Dispose(). PsdImage é a implementação concreta, selada, retornada por Image.Load() para entrada PSD/PSB — converter o resultado para PsdImage expõe o restante da superfície do documento: ColorMode, Version, Layers, Compression, BitsPerChannel e mais.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Tipos de Valor de Geometria
Point, Size, Rectangle e RectangleF são os tipos de valor usados para limites e coordenadas em todo o API — Layer.Bounds e Image.Bounds são ambos Rectangle, e PsdImage.Size é um Size. Rectangle contém métodos reais de geometria: Contains(), Intersect(), Union(), Inflate() e FromLeftTopRightBottom(), entre outros.
Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;
bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");
Blocos de Recursos e Exceções
PsdImage.ImageResources retorna o array ResourceBlock[] analisado — cada bloco expõe ID, DataSize, Name e Signature. Nesta compilação FOSS, ImageResources, GlobalLayerResources, ActiveLayer e HasTransparencyData podem ser lidos, mas não reatribuídos — cada um tem um setter que lança NotSupportedException se chamado, portanto trate-os como somente-leitura, ainda que apareçam como propriedades.
Erros de carregamento e gravação aparecem como dois tipos de exceção dedicados: PsdLoadException quando um documento não pode ser analisado, e PsdSaveException quando um documento não pode ser escrito novamente.
try
{
using var image = (PsdImage)Image.Load(inputPath);
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}
Início Rápido
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing Aspose.PSD.FileFormats.Psd;
try
{
using var image = (PsdImage)Image.Load("input.psd");
Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Load failed: {ex.Message}");
}
Formatos Suportados
| Formato | Extensão | Ler | Escrever |
|---|---|---|---|
| Documento do Photoshop | psd | ✓ | ✓ |
| Documento Grande do Photoshop | psb | ✓ | ✓ |
Código Aberto & Licenciamento
Aspose.PSD FOSS para .NET está licenciado sob MIT e pode ser usado em produtos comerciais sem royalties, sem marca d’água de avaliação ou limite de uso.
O pacote está na versão 1.0.0 e requer apenas .NET 10.0 em tempo de execução — não possui outras dependências de terceiros.