Hoe te werken met de Aspose.PSD FOSS Core API in Python
Aspose.PSD FOSS voor Python laadt en inspecteert de PSD/PSB documentstructuur via PsdImage, een subklasse van Image. Dit artikel behandelt het laden van een document, het lezen van de header en afbeeldingsbronnen, en het opslaan ervan terug naar schijf.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
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:$PYTHONPATHStap 2: Importeer vereiste klassen
PsdImage is het toegangspunt dat door de hele handleiding wordt gebruikt:
from aspose_psd_foss.psdimage import PsdImageStap 3: Laad een PSD/PSB Document
PsdImage.load() opent een document vanaf een bestandspad of een stream:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")Stap 4: Inspecteer de documentheader
PsdImage exposeert headervelden die zijn gelezen uit het geparste document: width, height, bits_per_channel, color_mode (een ColorModes waarde), en compression (een CompressionMethod waarde):
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}")ColorModes waarden zijn BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE en LAB. CompressionMethod waarden zijn RAW, RLE, ZIP_WITHOUT_PREDICTION en ZIP_WITH_PREDICTION.
Stap 5: Lees Image Resource Blocks
image_resources retourneert de geparste ResourceBlock items van het document. Elk blok exposeert id, name en size:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources is alleen-lezen in deze FOSS-build — toewijzen eraan veroorzaakt NotSupportedException (zie Bekende Beperkingen in de FAQ).
Stap 6: Document opslaan
Schrijf het document terug naar de schijf en geef vervolgens de bronnen van de afbeelding vrij:
image.save("output.psd")
image.dispose()Veelvoorkomende problemen en oplossingen
PsdLoadException bij het laden van een bestand. De invoer is geen geldig PSD/PSB document, of de header is niet gevalideerd. Bevestig dat het bestand een echt PSD/PSB bestand is voordat je het laadt.
NotSupportedException bij het instellen image_resources or global_layer_resources. Deze setters worden niet ondersteund in deze FOSS-build. Beschouw image_resources als alleen-lezen.
Veelgestelde vragen
Kan ik een PSD-bestand laden vanuit een stream in plaats van een bestandspad?
Ja — PsdImage.load() accepteert zowel een bestandspad-string als een leesbare stream (io.BytesIO/io.BufferedIOBase).
Bevat image_resources laaggegevens?
Nee. image_resources bevat resourceblokken op documentniveau (geparseerd uit de PSD-image-resources-sectie). Gegevens op laagniveau worden gelezen via PsdImage.layers — zie Werken met lagen.
Is PsdImage.version de versie van het PSD-bestandsformaat?
Nee. PsdImage.version rapporteert een intern Aspose.PSD-compatibel API-versienummer (momenteel 6) — het heeft niets te maken met of het geladen bestand PSD of PSB is. De setter accepteert alleen de waarde 6; elke andere waarde veroorzaakt ValueError.