Introduktion
Aspose.PSD FOSS för Python laddar, inspekterar och sparar PSD- och PSB-dokument via en liten uppsättning klasser. Detta inlägg tittar på delar av den centrala API som introduktionsinlägget inte täckte djupgående: hur Image och PsdImage förhåller sig till varandra, geometrivärdestyperna som används i hela biblioteket, och hur biblioteket rapporterar inläsnings- och sparningsfel.
Vad som ingår
Bild och PsdImage
Image är en minimal abstrakt basklass: den definierar endast load(), som inspekterar indatan och returnerar en konkret subklass — för PSD/PSB-indata är den subklassen PsdImage. Den fullständiga dokumentsurfacedelen — color_mode, version, layers, compression, bits_per_channel, size och mer — finns på PsdImage själv, inte på Image-basen.
from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage
with Image.load("input.psd") as image:
assert isinstance(image, PsdImage)
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Size: {image.size}, Layers: {image.layer_count}")
Geometrivärdestyper
Point, Size, Rectangle och RectangleF är de värdetyper som används för koordinater och utsträckningar i hela API — Layer.bounds är en Rectangle, och PsdImage.size är en Size. Rectangle innehåller faktiska geometrimetoder: contains(), intersect_rect(), union_rect(), inflate() och from_left_top_right_bottom(), bland annat.
from aspose_psd_foss.rectangle import Rectangle
layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")
Resursblock och undantag
PsdImage.image_resources returnerar den analyserade listan av ResourceBlock-objekt — varje objekt exponerar id, name, data_size och signature. I denna FOSS-byggnad kan image_resources, global_layer_resources, active_layer och has_transparency_data läsas men inte tilldelas på nytt — var och en har en setter som kastar NotSupportedException om den anropas, så behandla dem som skrivskyddade även om de framträder som vanliga egenskaper.
Läs- och skrivfel visas som två dedikerade undantagstyper: PsdLoadException när ett dokument inte kan analyseras, och PsdSaveException när ett dokument inte kan skrivas tillbaka.
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
for resource in image.image_resources:
print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
print(f"Failed to load input.psd: {ex}")
Snabbstart
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:$PYTHONPATHfrom aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
print(f"Size: {image.size}, ColorMode: {image.color_mode}")
print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
print(f"Load failed: {ex}")
Stödda format
| Format | Filändelse | Läsa | Skriva |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Öppen källkod & licensiering
Aspose.PSD FOSS för Python är licensierad under MIT och får användas i kommersiella produkter utan royalties, utan utvärderingsvattenstämpel eller användningsgräns.
Biblioteket har noll tredjeparts native-beroenden — endast Python standardbibliotek krävs vid körning.