Come lavorare con il Aspose.PSD FOSS Core API in .NET
Aspose.PSD FOSS per .NET carica e ispeziona la struttura del documento PSD/PSB tramite PsdImage, una sottoclasse di Image. Questo articolo copre il caricamento di un documento, la lettura dell’intestazione e delle risorse immagine, e il salvataggio su disco.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildPasso 2: Importa le classi richieste
using Aspose.PSD.FileFormats.Psd;Passo 3: Carica un documento PSD/PSB
PsdImage.Load apre un documento da un percorso file o da uno stream:
using var image = PsdImage.Load("input.psd");Passo 4: Ispeziona l’intestazione del documento
PsdImage espone i campi dell’intestazione letti dal documento analizzato: Width, Height, BitsPerChannel, ColorMode (un valore ColorModes), e Compression (un valore 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}");I valori di ColorModes includono Bitmap, Grayscale, Indexed, Rgb e Cmyk, tra gli altri (Multichannel, Duotone, Lab). I valori di CompressionMethod sono Raw, RLE, ZipWithoutPrediction e una variante ZIP-with-prediction.
Passo 5: Leggi i blocchi delle risorse immagine
ImageResources restituisce le voci ResourceBlock analizzate del documento. Ogni blocco espone ID, Name e Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources è di sola lettura in questa build FOSS — assegnarvi genera un’eccezione NotSupportedException (vedi le Limitazioni note nella FAQ).
Passo 6: Salva il documento
image.Save("output.psd");Problemi comuni e soluzioni
PsdLoadException quando si carica un file. L’input non è un documento PSD/PSB valido, oppure l’intestazione non ha superato la convalida. Conferma che il file sia un vero file PSD/PSB prima di caricarlo.
NotSupportedException quando si imposta ImageResources or GlobalLayerResources. Questi setter non sono supportati in questa build FOSS. Tratta ImageResources come di sola lettura.
ColorMode or Compression viene stampato come valore numerico anziché come nome. Esegui il cast della proprietà al suo tipo enum esplicitamente, oppure usa .ToString(), per ottenere il nome leggibile (ColorModes.Rgb, non 3).
Domande frequenti
Posso caricare un file PSD da uno stream anziché da un percorso file?
Sì — PsdImage.Load ha un overload che accetta un Stream.
Include ImageResources i dati dei livelli?
No. ImageResources contiene blocchi di risorse a livello di documento (analizzati dalla sezione delle risorse immagine del PSD). I dati a livello di livello vengono letti tramite PsdImage.Layers — vedi Lavorare con i livelli.
Il PsdImage.Version è la versione del formato file PSD?
No. PsdImage.Version segnala un numero di versione interno API compatibile con Aspose.PSD (attualmente 6) — non è correlato al fatto che il file caricato sia PSD o PSB.