Cómo trabajar con el Aspose.PSD FOSS Core API en .NET
Aspose.PSD FOSS para .NET carga e inspecciona la estructura del documento PSD/PSB a través de PsdImage, una subclase de Image. Este artículo cubre la carga de un documento, la lectura de su encabezado y recursos de imagen, y su guardado de nuevo en el disco.
Guía paso a paso
Paso 1: Instalar el paquete
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildPaso 2: Importar las clases requeridas
using Aspose.PSD.FileFormats.Psd;Paso 3: Cargar un documento PSD/PSB
PsdImage.Load abre un documento desde una ruta de archivo o un flujo:
using var image = PsdImage.Load("input.psd");Paso 4: Inspeccionar el encabezado del documento
PsdImage expone los campos de encabezado leídos del documento analizado: Width, Height, BitsPerChannel, ColorMode (un valor ColorModes), y Compression (un 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}");Los valores de ColorModes incluyen Bitmap, Grayscale, Indexed, Rgb y Cmyk, entre otros (Multichannel, Duotone, Lab). Los valores de CompressionMethod son Raw, RLE, ZipWithoutPrediction y una variante con predicción de ZIP.
Paso 5: Leer bloques de recursos de imagen
ImageResources devuelve las entradas ResourceBlock analizadas del documento. Cada bloque expone ID, Name y Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources es de solo lectura en esta compilación FOSS — asignarle un valor lanza una excepción NotSupportedException (ver Limitaciones Conocidas en el FAQ).
Paso 6: Guardar el documento
image.Save("output.psd");Problemas comunes y soluciones
PsdLoadException al cargar un archivo. La entrada no es un documento PSD/PSB válido, o su encabezado falló la validación. Confirme que el archivo es un auténtico archivo PSD/PSB antes de cargarlo.
NotSupportedException al establecer ImageResources or GlobalLayerResources. Estos setters no son compatibles en esta compilación FOSS. Trate ImageResources como de solo lectura.
ColorMode or Compression se imprime como un valor numérico en lugar de un nombre. Convierta la propiedad a su tipo enum explícitamente, o use .ToString(), para obtener el nombre legible (ColorModes.Rgb, no 3).
Preguntas frecuentes
¿Puedo cargar un archivo PSD desde un flujo en lugar de una ruta de archivo?
Sí — PsdImage.Load tiene una sobrecarga que acepta un Stream.
¿ImageResources incluye datos de capa?
No. ImageResources contiene bloques de recursos a nivel de documento (analizados de la sección de recursos de imagen PSD). Los datos a nivel de capa se leen a través de PsdImage.Layers — ver Trabajando con capas.
¿PsdImage.Version es la versión del formato de archivo PSD?
No. PsdImage.Version informa un número de versión interno de API compatible con Aspose.PSD (actualmente 6) — no está relacionado con si el archivo cargado es PSD o PSB.