Jak pracować z Aspose.PSD FOSS Core API w Python

Jak pracować z Aspose.PSD FOSS Core API w Python

Aspose.PSD FOSS dla Python ładuje i przegląda strukturę dokumentu PSD/PSB poprzez PsdImage, podklasę Image. Ten artykuł opisuje ładowanie dokumentu, odczytywanie jego nagłówka i zasobów graficznych oraz zapisywanie go z powrotem na dysk.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

Krok 2: Zaimportuj wymagane klasy

PsdImage jest punktem wejścia używanym w całym tym przewodniku:

from aspose_psd_foss.psdimage import PsdImage

Krok 3: Załaduj dokument PSD/PSB

PsdImage.load() otwiera dokument z ścieżki pliku lub strumienia:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Krok 4: Sprawdź nagłówek dokumentu

PsdImage udostępnia pola nagłówka odczytane z przetworzonego dokumentu: width, height, bits_per_channel, color_mode (wartość ColorModes), oraz compression (wartość CompressionMethod):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

Wartości ColorModes to BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE i LAB. Wartości CompressionMethod to RAW, RLE, ZIP_WITHOUT_PREDICTION i ZIP_WITH_PREDICTION.


Krok 5: Odczytaj bloki zasobów obrazu

image_resources zwraca przetworzone wpisy ResourceBlock dokumentu. Każdy blok udostępnia id, name i size:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources jest tylko do odczytu w tej wersji FOSS — przypisanie do niego wywołuje NotSupportedException (zobacz Known Limitations w FAQ).


Krok 6: Zapisz dokument

Zapisz dokument z powrotem na dysk, a następnie zwolnij zasoby obrazu:

image.save("output.psd")
image.dispose()

Typowe problemy i rozwiązania

PsdLoadException podczas ładowania pliku. Wejście nie jest prawidłowym dokumentem PSD/PSB lub jego nagłówek nie przeszedł walidacji. Upewnij się, że plik jest autentycznym plikiem PSD/PSB przed załadowaniem.

NotSupportedException przy ustawianiu image_resources or global_layer_resources. Te settery nie są obsługiwane w tej wersji FOSS. Traktuj image_resources jako tylko do odczytu.

Najczęściej zadawane pytania

Czy mogę wczytać plik PSD ze strumienia zamiast z ścieżki pliku?

Tak — PsdImage.load() akceptuje zarówno ciąg ścieżki do pliku, jak i strumień do odczytu (io.BytesIO/io.BufferedIOBase).

Czy image_resources zawiera dane warstw?

Nie. image_resources przechowuje bloki zasobów na poziomie dokumentu (parsowane z sekcji zasobów obrazu PSD). Dane na poziomie warstwy są odczytywane przez PsdImage.layers — zobacz Praca z warstwami.

Czy PsdImage.version jest wersją formatu pliku PSD?

Nie. PsdImage.version zgłasza wewnętrzny numer wersji API zgodny z Aspose.PSD (obecnie 6) — nie ma to związku z tym, czy wczytany plik jest PSD czy PSB. Jego setter akceptuje tylko wartość 6; każda inna wartość powoduje ValueError.

Zobacz także

 Polski