Nucleu API
API de bază
PsdImage este punctul de intrare pentru încărcarea, inspectarea și salvarea documentelor PSD/PSB. Extinde clasa de bază abstractă Image, care declară Width, Height, Bounds, Load(), Save() și Dispose().
Încărcarea și salvarea documentelor
Image.Load() acceptă o cale de fișier sau un Stream și returnează un Image; convertește rezultatul la PsdImage pentru a accesa restul suprafeței documentului. PsdImage.Save() scrie documentul înapoi la o cale de fișier sau flux.
using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);Proprietăți ale antetului documentului
PsdImage expune antetul analizat ca proprietăți tipizate: Width, Height, BitsPerChannel, ColorMode, Version, Compression, Size și 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}");Resurse de imagini
PsdImage.ImageResources returnează matricea ResourceBlock[] analizată. În această construcție FOSS, ImageResources, GlobalLayerResources, ActiveLayer și HasTransparencyData pot fi citite, dar nu reasignate — setatoarele lor aruncă NotSupportedException.
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}Sfaturi și cele mai bune practici
- Întotdeauna convertește rezultatul lui
Image.Load()laPsdImagepentru a accesa membrii specifici PSD. - Înfășoară obiectele demne de
Dispose()într-o declarațieusing;PsdImageimplementeazăIDisposable. - Tratează
ImageResources,GlobalLayerResources,ActiveLayerșiHasTransparencyDataca fiind doar citire, chiar dacă expun un setter. - Verifică
image.Layers.Lengthînainte de a indexa înimage.Layers— un document aplatizat poate avea zero straturi.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
NotSupportedException când se setează ImageResources | Această proprietate este doar în citire în versiunea FOSS, deși are un setter | Citește valoarea; nu încerca să o reasignezi |
Matrice image.Layers goală pe un document aplatizat | IsFlatten este true și documentul nu are straturi analizate | Verificați image.Layers.Length (sau image.IsFlatten) înainte de a indexa în image.Layers |
FAQ
Încărcarea unui document PSD decodează datele de pixeli?
Nu. PsdImage.Load() analizează antetul documentului, metadatele stratului și resursele fără a decoda sau reda datele pixel.
Pot să convertesc un fișier PSD într-un alt format de imagine?
Nu. Această bibliotecă încarcă, inspectează și salvează doar documente PSD/PSB — nu redă datele pixel și nu convertește în alte formate de imagine.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
Image.Load(string) / Image.Load(Stream) | Încarcă un document PSD sau PSB |
PsdImage.Save(string) / PsdImage.Save(Stream) | Salvează documentul |
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlatten | Proprietăţi antet ale documentului |
PsdImage.ImageResources | Blocuri de resurse de imagine analizate (doar citire) |