Introductie
Aspose.PSD FOSS voor Python is een nieuwe open-source bibliotheek voor het werken met PSD- en PSB-bestanden (Photoshop large document) vanuit Python-code. Het wordt uitgebracht onder de MIT-licentie, heeft geen externe native afhankelijkheden, en vereist alleen de Python standaardbibliotheek tijdens runtime. Het pakket wordt geïmporteerd als aspose_psd_foss.
De bibliotheek is georganiseerd rond de PsdImage-klasse, die de abstracte Image-basisklasse uitbreidt, en de Layer-klasse. Image.load() / PsdImage.load() laden een document vanaf een bestandspad of een stream, waarbij header-informatie (width, height, color_mode, version, compression) en de geparseerde layers-collectie worden blootgelegd; PsdImage.save() schrijft het document terug naar een bestand of stream. Beide klassen ondersteunen de with-instructie voor automatische opruiming. Elke Layer exposeert zijn eigen metadata — name, bounds, is_visible, opacity, clipping, blend_mode_key, en kanaal/maskerinformatie — en een subset van deze eigenschappen kan ter plaatse worden gewijzigd en terug naar het bestand worden opgeslagen.
Deze release is bedoeld voor ontwikkelaars die PSD/PSB-bestanden binnen een Python-codebase moeten inspecteren of beperkte metadata-bewerkingen moeten uitvoeren zonder een commerciële licentie — asset-pipeline-tools die rapporteren over de laagstructuur, build-scripts die lagen hernoemen of de zichtbaarheid van lagen schakelen vóór overdracht, of test-fixtures die PSD-header- en laaggegevens moeten lezen zonder een volledige renderengine. De bibliotheek rendert geen pixelgegevens en converteert PSD/PSB niet naar andere afbeeldingsformaten — het is een metadata-gerichte lezer/schrijver voor het PSD/PSB-containerformaat.
Wat is inbegrepen
Documentinspectie
PsdImage.load() parseert de header van een PSD- of PSB-bestand naar getypeerde eigenschappen — width, height, bits_per_channel, color_mode, version, compression, size en is_flatten — zonder pixelgegevens te decoderen.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Layers: {image.layer_count}, Compression: {image.compression}")
Laagmetadata
Elke invoer in PsdImage.layers is een Layer die zijn eigen grenzen, zichtbaarheid, dekking, bijsnijden en mengmodusmetadata blootlegt.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
for layer in image.layers:
print(f"{layer.name}: {layer.bounds}, Visible={layer.is_visible}, Opacity={layer.opacity}")
Ondersteunde metadata-bewerkingen
Een subset van laageigenschappen kan ter plaatse worden gewijzigd en teruggeschreven met PsdImage.save(): naam, zichtbaarheid, dekking, bijsnijden, mengmodus-sleutel, en de vier randkanten.
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
layer.name = f"{layer.name} (edited)"
layer.is_visible = not layer.is_visible
layer.opacity = 128
layer.blend_mode_key = BlendMode.MULTIPLY
image.save("output.psd")
Snelstart
Installeer het pakket, laad vervolgens een PSD- of PSB-bestand, inspecteer de lagen, en sla het opnieuw op:
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
with PsdImage.load("input.psd") as image:
print(f"Width: {image.width}, Height: {image.height}, Layers: {image.layer_count}")
for layer in image.layers:
print(f" {layer.name}: {layer.bounds}")
image.save("output.psd")
Ondersteunde formaten
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open source & licenties
Aspose.PSD FOSS voor Python is gelicentieerd onder de MIT-licentie en mag worden gebruikt in commerciële producten zonder royalty’s, zonder evaluatiewatermerk of gebruikslimiet.
De bibliotheek heeft geen enkele native afhankelijkheid van derden — alleen de Python standaardbibliotheek is vereist tijdens runtime.