Rdzeń API
Podstawowe API
PsdImage jest punktem wejścia do ładowania, przeglądania i zapisywania dokumentów PSD/PSB. Rozszerza abstrakcyjną klasę bazową Image, która deklaruje Width, Height, Bounds, Load(), Save() i Dispose().
Ładowanie i zapisywanie dokumentów
Image.Load() przyjmuje ścieżkę pliku lub Stream i zwraca Image; rzutuj wynik na PsdImage, aby uzyskać dostęp do reszty powierzchni dokumentu. PsdImage.Save() zapisuje dokument z powrotem do ścieżki pliku lub strumienia.
using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);Właściwości nagłówka dokumentu
PsdImage udostępnia przetworzony nagłówek jako typowane właściwości: 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}");Zasoby obrazów
PsdImage.ImageResources zwraca przetworzoną tablicę ResourceBlock[]. W tej wersji FOSS, ImageResources, GlobalLayerResources, ActiveLayer i HasTransparencyData można odczytać, ale nie można im przypisać — ich settery rzucają NotSupportedException.
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}Wskazówki i najlepsze praktyki
- Zawsze rzutuj wynik
Image.Load()naPsdImage, aby uzyskać dostęp do specyficznych dla PSD elementów. - Umieść obiekty warte
Dispose()w instrukcjiusing;PsdImageimplementujeIDisposable. - Traktuj
ImageResources,GlobalLayerResources,ActiveLayeriHasTransparencyDatajako tylko do odczytu, mimo że udostępniają setter. - Sprawdź
image.Layers.Lengthprzed indeksowaniemimage.Layers— spłaszczony dokument może nie mieć warstw.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
NotSupportedException przy ustawianiu ImageResources | Ta właściwość jest tylko do odczytu w wersji FOSS, pomimo że posiada setter | Odczytaj wartość; nie próbuj jej ponownie przypisać |
Pusta tablica image.Layers w spłaszczonym dokumencie | IsFlatten jest true i dokument nie ma przetworzonych warstw | Sprawdź image.Layers.Length (lub image.IsFlatten) przed indeksowaniem w image.Layers |
FAQ
Czy wczytanie dokumentu PSD dekoduje dane pikseli?
Nie. PsdImage.Load() analizuje nagłówek dokumentu, metadane warstw i zasoby bez dekodowania lub renderowania danych pikseli.
Czy mogę przekonwertować plik PSD na inny format obrazu?
Nie. Ta biblioteka ładuje, przegląda i zapisuje wyłącznie dokumenty PSD/PSB — nie renderuje danych pikseli ani nie konwertuje do innych formatów obrazu.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Image.Load(string) / Image.Load(Stream) | Wczytuje dokument PSD lub PSB |
PsdImage.Save(string) / PsdImage.Save(Stream) | Zapisuje dokument |
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlatten | Właściwości nagłówka dokumentu |
PsdImage.ImageResources | Przetworzone bloki zasobów obrazu (tylko do odczytu) |