כיצד לעבוד עם שכבות PSD ב-Python

כיצד לעבוד עם שכבות PSD ב-Python

מדריך זה מראה כיצד לרשום את שכבות המסמך, לקרוא ולשנות מטא-נתונים של שכבה שניתנת לעריכה, למקם שכבה מחדש, ולהסיר שכבה מהאוסף. המאפיין layers של PsdImage הטעון מחזיר את האוסף של עצמים Layer. כל Layer חושף מטא-נתונים ניתנים לעריכה — שם, נראות, אטימות, חיתוך, מצב מיזוג ומיקום (קצוות הגבולות) — בנוסף למידע קריאה-בלבד על גבולות כלליים והערוצים.

מדריך שלב-אחר-שלב

שלב 1: התקנת החבילה

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

שלב 2: ייבוא המחלקות הדרושות

PsdImage טוען את המסמך; BlendMode משמש מאוחר יותר כדי להגדיר את מצב המיזוג של שכבה:

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

שלב 3: טען מסמך והצג את השכבות שלו

טען את המסמך, ואז חזור על layers כדי לראות את שם וגיאומטריית כל שכבה:

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

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

שלב 4: קרא וערוך את נראות השכבה, השקיפות ומצב המיזוג

is_visible, opacity (בדרך כלל 0-255), clipping, name ו-blend_mode_key כולם כוללים setters פעילים:

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"

שלב 5: קרא והזז מחדש את גבולות השכבה

bounds, width, height ו-channels_count הם קריאה-בלבד — אך ל-top, left, bottom ו-right יש לכל אחד setter פעיל שממקם מחדש את השכבה:

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

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

שלב 6: החלף את אוסף השכבות

ל-PsdImage.layers עצמו יש setter פעיל, כך שניתן להחליף את כל האוסף (למשל, כדי להסיר שכבה):

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

שלב 7: שמירת המסמך

שמור כל עריכה שנעשתה בשלבים הקודמים לכונן, ולאחר מכן שחרר את משאבי התמונה:

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

בעיות נפוצות ותיקונים

NotSupportedException בזמן הגדרה channel_information, layer_mask_data, או layer_blending_ranges_data. שלושת אלה Layer המתאימים אינם נתמכים בבנייה זו של קוד פתוח — יש להתייחס אליהם כקריאה בלבד.

ערך השקיפות נראה שגוי לאחר הגדרתו. opacity הוא בדרך כלל ערך של 0-255, ולא שבר של 0.0-1.0 או אחוז — layer.opacity = 200 מתאר בערך 78% אטימות (200/255).

השינויים בשכבה אינם מופיעים לאחר השמירה. אשר אתה משנה את Layer מופע שהושג מ image.layers, ושאתה קורא ל image.save() לאחר שביצעת את העריכות שלך.

שאלות נפוצות

האם אני יכול להסיר שכבה ממסמך?

כן — PsdImage.layers כולל setter עובד, כך שאתה יכול להקצות לו רשימה מסוננת להסרת שכבות (ראה שלב 6).

אילו מצבי מיזוג זמינים?

BlendMode כולל ערכים כגון NORMAL, MULTIPLY, SCREEN, OVERLAY ו-DARKEN, בין היתר — מוגדר באמצעות Layer.blend_mode_key.

האם נתוני מסיכת שכבה זמינים?

Layer.layer_mask_data כולל getter עובד, אך ה-setter שלו מעלה NotSupportedException בבנייה הזו של FOSS.

ראה גם

 עברית