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 jedynie load() — reszta powierzchni dokumentu (width, height, save(), obsługa menedżera kontekstu) jest zdefiniowana w samym PsdImage, a nie dziedziczona.
Ładowanie i zapisywanie dokumentów
Image.load() przyjmuje ścieżkę pliku lub strumień i zwraca Image; dla wejścia PSD/PSB jest to zawsze PsdImage, więc powierzchnia dokumentu jest od razu dostępna bez jawnego rzutowania. PsdImage obsługuje także instrukcję with do automatycznego czyszczenia, a PsdImage.save() zapisuje dokument z powrotem do ścieżki pliku lub strumienia.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load(input_path) as image:
# ... inspect or edit ...
image.save(output_path)Właściwości nagłówka dokumentu
PsdImage udostępnia przetworzony nagłówek jako właściwości typowane: width, height, bits_per_channel, color_mode, version, compression, size i is_flatten.
print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Compression: {image.compression}, IsFlatten: {image.is_flatten}")Zasoby obrazów
PsdImage.image_resources zwraca przetworzoną listę obiektów ResourceBlock. W tej wersji FOSS, image_resources, global_layer_resources, active_layer i has_transparency_data mogą być odczytywane, ale nie mogą być ponownie przypisywane — ich settery rzucają NotSupportedException.
for resource in image.image_resources:
print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")Porady i najlepsze praktyki
Image.load()już zwracaPsdImagedla wejścia PSD/PSB — nie jest potrzebna konwersja, w przeciwieństwie do niektórych innych portów tej biblioteki w innych językach.- Użyj instrukcji
with;PsdImageobsługuje protokół menedżera kontekstu do sprzątania. - Traktuj
image_resources,global_layer_resources,active_layerihas_transparency_datajako tylko do odczytu, mimo że udostępniają metodę ustawiającą. - Sprawdź
image.layer_countprzed indeksowaniemimage.layers— spłaszczony dokument może nie mieć warstw.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
NotSupportedException przy ustawianiu image_resources | Ta właściwość jest tylko do odczytu w wersji FOSS, pomimo że ma setter | Odczytaj wartość; nie próbuj jej ponownie przypisywać |
Pusta lista image.layers w spłaszczonym dokumencie | is_flatten jest True i dokument nie ma parsowanych warstw | Sprawdź image.layer_count (lub image.is_flatten) przed indeksowaniem do 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 na inne formaty obrazu.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Image.load(path) / Image.load(stream) | Ładuje dokument PSD lub PSB |
PsdImage.save(path) / PsdImage.save(stream) | Zapisuje dokument |
PsdImage.width / height / bits_per_channel / color_mode / version / compression / size / is_flatten | Właściwości nagłówka dokumentu |
PsdImage.image_resources | Przetworzone bloki zasobów obrazu (tylko do odczytu) |