Jak zapisać i wyeksportować dokumenty PSD w Python

Jak zapisać i wyeksportować dokumenty PSD w Python

Ten przewodnik pokazuje, jak zapisać edytowany dokument do ścieżki pliku, do otwartego strumienia oraz jak usunąć załadowany obraz po zakończeniu. PsdImage.save jest jedynym publicznym punktem wejścia do zapisu dokumentu — przyjmuje zarówno ścieżkę pliku, jak i już otwarty strumień zapisu. Niskopoziomowy zapis sekcji, który wykonuje rzeczywiste kodowanie bajtów, jest wewnętrzną szczegółowością implementacji, a nie czymś, co wywołujesz bezpośrednio.

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 jedyną klasą, której potrzebują przykłady w tym przewodniku:

from aspose_psd_foss.psdimage import PsdImage

Krok 3: Zapisz do ścieżki pliku

Wczytaj dokument, wprowadź edycję, a następnie zapisz go z powrotem do ścieżki pliku:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

Krok 4: Zapisz do otwartego strumienia

Przekazanie strumienia zamiast ścieżki pozostawia strumień otwarty po zapisaniu — kontrolujesz, kiedy go zamknąć:

with open("output.psd", "wb") as stream:
    image.save(stream)

Krok 5: Zwolnij obraz

Zwolnij zasoby, które utrzymuje załadowany PsdImage, gdy skończysz z nim pracować:

image.dispose()

Typowe problemy i rozwiązania

RuntimeError: PsdImage has been disposed. przy wywoływaniu save. Obraz został już zwolniony (przez dispose() lub with blok, który zakończył się) przed save został wywołany. Wywołaj save przed zwalnianiem.

PsdSaveException dotyczący długości łańcucha Pascala. Wartość łańcucha przekracza 255 bajtów — zobacz Obsługa wyjątków PSD Core and Troubleshooting.

Nie ma możliwości wymuszenia kontenera PSD lub PSB przy zapisie. Nie ma publicznego API, aby wybrać format wyjściowego kontenera — zapis zawsze odzwierciedla format (is_large_document / is_psb) dokument został wczytany. Jeśli potrzebujesz innego formatu kontenera, nie ma obsługiwanej ścieżki konwersji w tej wersji FOSS.

Najczęściej zadawane pytania

Czy zapisywanie do strumienia zamyka go po zakończeniu?

Nie — gdy przekazujesz strumień do save, strumień pozostaje otwarty, dzięki czemu kontrolujesz jego cykl życia (zobacz Krok 4). Zapis do ścieżki pliku, w przeciwieństwie do tego, otwiera i zamyka plik wewnętrznie.

Czy mogę wywołać wewnętrzny zapis sekcji bezpośrednio zamiast save?

Nie — zapis na poziomie sekcji jest wewnętrznym szczegółem implementacji wywoływanym przez PsdImage.save. Nie istnieje udokumentowany, wspierany sposób zapisu dokumentu poza wywołaniem save na instancji PsdImage.

Zobacz także

 Polski