Hur man arbetar med Aspose.PSD FOSS Core API i Python

Hur man arbetar med Aspose.PSD FOSS Core API i Python

Aspose.PSD FOSS för Python laddar och inspekterar PSD/PSB dokumentstruktur genom PsdImage, en underklass av Image. Denna artikel täcker laddning av ett dokument, läsning av dess header och bildresurser, samt sparande tillbaka till disk.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Steg 2: Importera nödvändiga klasser

PsdImage är startpunkten som används genom hela den här guiden:

from aspose_psd_foss.psdimage import PsdImage

Steg 3: Ladda ett PSD/PSB dokument

PsdImage.load() öppnar ett dokument från en filsökväg eller en ström:

from aspose_psd_foss.psdimage import PsdImage

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

Steg 4: Inspektera dokumenthuvudet

PsdImage exponerar rubrikfält som lästs från det analyserade dokumentet: width, height, bits_per_channel, color_mode (ett ColorModes-värde), och compression (ett CompressionMethod-värde):

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}")

Värdena för ColorModes är BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE och LAB. Värdena för CompressionMethod är RAW, RLE, ZIP_WITHOUT_PREDICTION och ZIP_WITH_PREDICTION.


Steg 5: Läs bildresursblock

image_resources returnerar dokumentets analyserade ResourceBlock-poster. Varje block exponerar id, name och size:

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

image_resources är skrivskyddad i detta FOSS-bygge — att tilldela den ger ett fel NotSupportedException (se Kända begränsningar i FAQ).


Steg 6: Spara dokumentet

Skriv dokumentet tillbaka till disk och släpp sedan bildens resurser:

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

Vanliga problem och lösningar

PsdLoadException vid inläsning av en fil. Inmatningen är inte ett giltigt PSD/PSB-dokument, eller så misslyckades dess header med validering. Bekräfta att filen är en äkta PSD/PSB-fil innan du laddar den.

NotSupportedException vid inställning image_resources or global_layer_resources. Dessa settare stöds inte i detta FOSS-bygge. Behandla image_resources som skrivskyddad.

Vanliga frågor

Kan jag ladda en PSD-fil från en ström istället för en filsökväg?

Ja — PsdImage.load() accepterar antingen en filvägssträng eller en läsbar ström (io.BytesIO/io.BufferedIOBase).

Inkluderar image_resources lagerdata?

Nej. image_resources innehåller resursblock på dokumentnivå (parsade från PSD-bildresurssektionen). Lagernivådata läses via PsdImage.layers — se Arbeta med lager.

Är PsdImage.version versionen av PSD-filformatet?

Nej. PsdImage.version rapporterar ett internt Aspose.PSD-kompatibelt API-versionsnummer (för närvarande 6) — det har inget samband med huruvida den inlästa filen är PSD eller PSB. Dess setter accepterar endast värdet 6; alla andra värden ger ValueError.

Se även

 Svenska