Layers

Layers

PsdImage.layers minden feldolgozott réteget Layer objektumok listájaként ad vissza. Minden Layer saját geometriáját, láthatóságát és kompozíciós állapotát, valamint metaadatait a csatornáiról, a maszkról és a keverési tartományokról teszi közzé.


Rétegmetaadatok olvasása

A name, bounds (és a származtatott width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key és channels_count mind közvetlenül olvashatók.

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}, "
              f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
              f"BlendMode={layer.blend_mode_key}")

Támogatott metaadat-szerkesztések

name, is_visible, opacity, clipping, blend_mode_key és a négy határél (top/left/bottom/right) helyben módosíthatók, és visszaírhatók a PsdImage.save() segítségével.

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

Csatorna- és maszkmetaadatok

channel_information, layer_mask_data és layer_blending_ranges_data csak olvashatóak ebben a FOSS kiadásban — a beállítóik NotSupportedException-t váltanak ki.

layer = image.layers[0]
for channel in layer.channel_information:
    print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")

if layer.has_mask_data:
    mask = layer.layer_mask_data
    print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")

Rétegek eltávolítása vagy átrendezése

PsdImage.layers rendelkezik beállítóval és lekérdezővel is: egy szűrt vagy átrendezett lista hozzárendelése felülírja a dokumentum réteggyűjteményét.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    image.layers = [layer for layer in image.layers if layer.is_visible]
    image.save("output.psd")

Tippek és bevált gyakorlatok

  • Az image.layers indexelhető pozíció szerint; a lista sorrendje megegyezik a dokumentum saját rétegsorrendjével.
  • blend_mode_key bármely BlendMode enum értéket elfogad — nincs ellenőrzés a dokumentum deklarált színmódjára vonatkozóan.
  • channel_information, layer_mask_data és layer_blending_ranges_data olvasható, de soha nem újrahozzárendelhető.
  • Hívd meg a(z) PsdImage.save() függvényt egyszer az összes szerkesztés után; minden hívás kiírja a teljes dokumentumot.

Gyakori problémák

ProblémaOkJavítás
NotSupportedException beállításakor channel_information, layer_mask_data vagy layer_blending_ranges_dataEzek a 3 tulajdonság csak olvashatóak a FOSS buildben, annak ellenére, hogy van beállítójukOlvasd ki az értéket; ne próbáld újra hozzárendelni
layer_mask_data hozzáférés, amikor nincs maszkNem minden rétegnek van maszk alrészleteEllenőrizze layer.has_mask_data a(z) layer.layer_mask_data olvasása előtt

FAQ

Eltávolíthatok egy réteget?

Igen — rendeld újra image.layers egy szűrt listára.

Módosíthatom egy réteg csatorna- vagy maszkadatait?

Nem. channel_information, layer_mask_data és layer_blending_ranges_data csak olvasható — csak name, is_visible, opacity, clipping, blend_mode_key, valamint a határélek módosíthatók.


API Reference összegzés

Osztály/MódszerLeírás
PsdImage.layersLekéri vagy beállítja a réteggyűjteményt — állítható az eltávolításra/újrarendezésre
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightTámogatott réteg metaadat módosítások
Layer.bounds / width / height / channels_countCsak olvasható réteggeometria
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataCsak olvasható csatorna/maszk/keverési metaadat

Lásd még:

 Magyar