Introducción

Aspose.PSD FOSS para .NET carga, inspecciona y guarda documentos PSD y PSB mediante un pequeño conjunto de clases. Esta publicación examina partes del core API que la publicación introductoria no cubrió en profundidad: la relación de herencia Image/PsdImage, los tipos de valor de geometría utilizados en toda la biblioteca y cómo la biblioteca informa errores de carga y guardado.


Qué incluye

Imagen y PsdImage

Image es la clase base abstracta y expone Width, Height, Bounds, Load(), Save() y Dispose(). PsdImage es la implementación concreta y sellada que devuelve Image.Load() para entrada PSD/PSB — convertir el resultado a PsdImage expone el resto de la superficie del documento: ColorMode, Version, Layers, Compression, BitsPerChannel y más.

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 Geometría

Point, Size, Rectangle y RectangleF son los tipos de valor utilizados para los límites y coordenadas en todo el API — Layer.Bounds y Image.Bounds son ambos Rectangle, y PsdImage.Size es un Size. Rectangle contiene métodos reales de geometría: Contains(), Intersect(), Union(), Inflate() y FromLeftTopRightBottom(), entre otros.

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}");

Bloques de Recursos y Excepciones

PsdImage.ImageResources devuelve la matriz ResourceBlock[] analizada — cada bloque expone ID, DataSize, Name y Signature. En esta compilación FOSS, ImageResources, GlobalLayerResources, ActiveLayer y HasTransparencyData pueden leerse pero no reasignarse — cada uno tiene un setter que lanza NotSupportedException si se llama, así que trátelos como de solo lectura aunque aparezcan como propiedades.

Los errores de carga y guardado aparecen como dos tipos de excepción dedicados: PsdLoadException cuando un documento no se puede analizar, y PsdSaveException cuando un documento no se puede volver a escribir.

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}");
}

Inicio Rápido

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build
using 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 Compatibles

FormatoExtensiónLeerEscribir
Documento de Photoshoppsd✓✓
Documento grande de Photoshoppsb✓✓

Código Abierto y Licencias

Aspose.PSD FOSS para .NET tiene licencia MIT y puede usarse en productos comerciales sin regalías, sin marca de agua de evaluación ni límite de uso.

El paquete está en la versión 1.0.0 y requiere solo .NET 10.0 en tiempo de ejecución — no tiene otras dependencias de terceros.


Comenzando

Recursos relacionados