บทนำ

PsdImage.layers คืนค่าทุกเลเยอร์ในเอกสาร PSD หรือ PSB เป็นรายการของอ็อบเจ็กต์ Layer. บทความนี้มุ่งเน้นที่สิ่งที่ Layer เปิดเผย: รูปร่างและสถานะภาพ, การนับจำนวนโหมดผสมและแฟล็กมาสก์, และคลาสเมตาดาต้าที่อธิบายช่องของเลเยอร์, มาสก์, และช่วงการผสม.


สิ่งที่รวมอยู่

คลาสเลเยอร์

แต่ละ Layer มีชื่อ (name), ขอบเขต Rectangle (bounds, พร้อมค่าที่สืบทอดจาก width/height/top/left/bottom/right), สถานะการมองเห็นและการผสม (is_visible, opacity, clipping, blend_mode_key), และจำนวนช่อง (channels_count). name, is_visible, opacity, clipping, blend_mode_key, และสี่ด้านของขอบเขตสามารถเปลี่ยนแปลงและเขียนกลับได้ด้วย PsdImage.save().

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

โหมดผสมและแฟล็กมาสก์

blend_mode_key เป็นค่า enum BlendMode — ไลบรารีกำหนดโหมดผสม PSD มาตรฐานทั้งหมด 29 โหมด (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, และอื่น ๆ). แฟล็ก enum LayerMaskFlags แยกต่างหาก (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) อธิบายพฤติกรรมการเรนเดอร์มาสก์เมื่อเลเยอร์มีมาสก์.

เมตาดาต้าช่องและมาสก์

Layer.channel_information คืนค่ารายการของอ็อบเจ็กต์ ChannelInformation ที่อธิบาย ID ของแต่ละช่อง, วิธีการบีบอัด, และความยาวเป็นไบต์. Layer.layer_mask_data (เป็น LayerMaskDataShort เมื่อมี) อธิบายขอบเขตและแฟล็กของมาสก์เลเยอร์; Layer.layer_blending_ranges_data เปิดเผยช่วงการผสมแบบรวมและต่อช่อง. คุณสมบัติทั้งสามนี้เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้ — ตัวตั้งค่าของมันจะโยน NotSupportedException หากถูกเรียก, แม้ว่ามันจะแสดงเป็นคุณสมบัติทั่วไป.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    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}")

เริ่มต้นอย่างรวดเร็ว

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
from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    visible_layers = [layer for layer in image.layers if layer.is_visible]
    for layer in visible_layers:
        print(f"{layer.name}: Opacity={layer.opacity}, BlendMode={layer.blend_mode_key}")

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
PSDpsd✓✓
PSBpsb✓✓

โอเพนซอร์ส & การให้สิทธิ์

Aspose.PSD FOSS สำหรับ Python มีใบอนุญาต MIT และสามารถใช้ในผลิตภัณฑ์เชิงพาณิชย์ได้โดยไม่มีค่าโรยัลตี้, ไม่มีลายน้ำการประเมินหรือขีดจำกัดการใช้งาน.

ไลบรารีนี้ไม่มีการพึ่งพาเนทีฟของบุคคลที่สามเลย — ต้องการเพียงไลบรารีมาตรฐาน Python เท่านั้นในขณะรันไทม์.


เริ่มต้น

ทรัพยากรที่เกี่ยวข้อง