Jak pracovat s vrstvami PSD v Python

Jak pracovat s vrstvami PSD v Python

Tento průvodce ukazuje, jak vypsat vrstvy dokumentu, číst a měnit editovatelná metadata vrstvy, přesunout vrstvu a odstranit vrstvu ze sbírky. Vlastnost layers načteného PsdImage vrací jeho kolekci objektů Layer. Každý Layer poskytuje editovatelná metadata — název, viditelnost, neprůhlednost, oříznutí, režim prolnutí a pozici (hrany ohraničení) — plus jen pro čtení celkové ohraničení a informace o kanálech.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

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: Importujte požadované třídy

PsdImage načte dokument; BlendMode se později použije k nastavení režimu prolnutí vrstvy:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

Krok 3: Načíst dokument a vypsat jeho vrstvy

Načtěte dokument a poté iterujte layers, abyste viděli název a geometrii každé vrstvy:

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

for layer in image.layers:
    print(f"{layer.name}: {layer.width}x{layer.height} at ({layer.left},{layer.top})")

Krok 4: Číst a upravovat viditelnost vrstvy, průhlednost a režim prolnutí

is_visible, opacity (obvykle 0-255), clipping, name a blend_mode_key mají všechny funkční settery:

layer = image.layers[0]

layer.is_visible = False          # hide the layer
layer.opacity = 200               # ~78% opacity
layer.blend_mode_key = BlendMode.MULTIPLY
layer.name = "Renamed Layer"

Krok 5: Číst a přemístit ohraničení vrstvy

bounds, width, height a channels_count jsou pouze pro čtení — ale top, left, bottom a right mají každý funkční setter, který přemísťuje vrstvu:

print(f"Bounds: {layer.bounds}")
print(f"Channels: {layer.channels_count}")

layer.left = 10
layer.top = 20
layer.right = 40
layer.bottom = 60

Krok 6: Nahradit kolekci vrstev

PsdImage.layers má sám funkční setter, takže můžete nahradit celou kolekci (například pro odebrání vrstvy):

image.layers = [l for l in image.layers if l.name != "Renamed Layer"]

Krok 7: Uložit dokument

Uložte všechny úpravy provedené v předchozích krocích zpět na disk a poté uvolněte prostředky obrázku:

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

Běžné problémy a opravy

NotSupportedException při nastavení channel_information, layer_mask_data, nebo layer_blending_ranges_data. Tyto tři Layer nastavovače nejsou v tomto FOSS sestavení podporovány — považujte je za pouze ke čtení.

Hodnota opacity vypadá po nastavení špatně. opacity je běžně hodnota v rozmezí 0-255, nikoli zlomek 0,0-1,0 nebo procento — layer.opacity = 200 znamená přibližně 78% neprůhlednosti (200/255).

Změny vrstvy se po uložení neobjeví. Potvrďte, že upravujete Layer instanci získanou z image.layers, a že zavoláte image.save() po provedení úprav.

Často kladené otázky

Můžu odstranit vrstvu z dokumentu?

Ano — PsdImage.layers má funkční setter, takže mu můžete přiřadit filtrovaný seznam k odstranění vrstev (viz Krok6).

Jaké režimy prolnutí jsou k dispozici?

BlendMode zahrnuje hodnoty jako NORMAL, MULTIPLY, SCREEN, OVERLAY a DARKEN, mezi jinými — nastaveno pomocí Layer.blend_mode_key.

Jsou k dispozici data masky vrstvy?

Layer.layer_mask_data má funkční getter, ale jeho setter vyvolá NotSupportedException v této FOSS verzi.

Viz také:

 Čeština