PsdImage ו
Layer, ומספקת למפתחים .NET גישה פרוגרמטית למבנה של מסמך PSD ללא
תלותיות מקומיות לקימפול. הספרייה קוראת את ממדי קובץ ה-PSD/PSB, מצב הצבע, עומק הביטים, ושיטת הדחיסה
והיא חושפת כל שכבה דרך PsdImage.Layers: כל Layer מדווחת על שמו,
גבולות, שקיפות, נראות, ומפתח מצב הערבוב (BlendMode), יחד עם מידע ברמה נמוכה
של מידע ערוץ (ChannelInformation) ונתוני מסיכת שכבה (LayerMaskData). תת-קבוצה של
מטא-נתוני השכבות — שם, גבולות (Left/Top/Right/Bottom), ומצב הערבוב — ניתנים
לשינוי במקום ולשמירה חזרה לדיסק באמצעות PsdImage.Save(); כל השאר על
המשטח הוא קריאה-בלבד לפי העיצוב בבנייה הזאת של קוד פתוח. Aspose.PSD FOSS for .NET הוא ברישיון MIT. התקן אותו עם
dotnet add package Aspose.PSD.FOSS — הספרייה אינה תלויה בתלות מקומית של צד שלישי
תלויות, רק .NET BCL. למשפחת מוצרי הארגון, ראה Aspose.PSD — Enterprise Product Family.Image.Load(filePath) או Image.Load(stream) פותח קובץ ומחזיר Image, המומר ל-PsdImage לגישה ספציפית ל-PSDPsdImage.Width, Height, ו-Size מדווחים על ממדי הקנבסPsdImage.ColorMode (ColorModes), BitsPerChannel, ו-Compression (CompressionMethod) מתארים איך נתוני הפיקסלים מקודדיםPsdImage.Version (PsdVersion) מבחין בין PSD סטנדרטי לגרסת PSB של מסמך גדולPsdImage.Layers מחזירה את כל ה-Layer בסדר המסמך; PsdImage.ActiveLayer מדווחת איזו שכבה פעילהLayer חושפת את Name, Bounds, Opacity, IsVisible, ו-BlendModeKey (BlendMode)Layer.ChannelInformation ו-Layer.LayerMaskData חושפות מידע על ערוצים ומסיכות לצורך חקירה מעמיקה יותרLayer.ChannelsCount מדווחת כמה ערוצי תמונה נושא השכבה.Layer.Name, Layer.Left/Top/Right/Bottom, ו-Layer.BlendModeKey ניתן להגדיר ישירותPsdImage.Save(filePath) או PsdImage.Save(stream) שומר את המסמך המותאם חזרה על הדיסקImage.Load מאמת שהעריכות מתבצעות במעגל שלם כראויNotSupportedException אם מנסים להגדירם — גרסה זו תומכת בעריכות רק של מטה-נתונים, לא בכתיבה מחדש מלאהPsdImage.ImageResources ו-GlobalLayerResources חושפים אוספי ResourceBlock/LayerResourcePsdImage.GlobalLayerMaskInfo מדווח מידע על מסכת שכבה ברמת המסמךPsdImage.IsFlatten ו-HasTransparencyData מדווחים על דגלים ברמת המסמךPsdLoadException ו-PsdSaveException מציגים שגיאות טעינה/שמירה עם הודעות ברורותטען קובץ באמצעות Image.Load והמר את התוצאה ל-PsdImage עבור חברים ספציפיים ל-PSD.
using var image = (PsdImage)Image.Load("test.psd");
Console.WriteLine($"Width: {image.Width}, Channels: {image.ChannelsCount}, Layers: {image.Layers.Length}");
Layer layer = image.Layers[0];
Console.WriteLine($"Bounds: {layer.Bounds}, BlendMode: {layer.BlendModeKey}, Opacity: {layer.Opacity}, Visible: {layer.IsVisible}");
ניתן לשנות את שם השכבה, הגבולות ומצב המיזוג במקום ולשמור חזרה לדיסק.
using (var image = (PsdImage)Image.Load("test.psd"))
{
image.Layers[0].Name = "Renamed layer";
image.Layers[0].Left = 10;
image.Layers[0].Top = 20;
image.Layers[0].Right = 40;
image.Layers[0].Bottom = 60;
image.Layers[0].BlendModeKey = BlendMode.Multiply;
image.Save("edited.psd");
}
using var reloaded = (PsdImage)Image.Load("edited.psd");
Console.WriteLine($"Name: {reloaded.Layers[0].Name}, BlendMode: {reloaded.Layers[0].BlendModeKey}");
ניתן לקרוא מידע ערוץ אך לא ניתן להקצות מחדש — ניסיון להגדיר אותו גורם לזריקת NotSupportedException.
using var image = (PsdImage)Image.Load("test.psd");
Layer layer = image.Layers[0];
ChannelInformation[] channelInformation = layer.ChannelInformation;
Console.WriteLine($"Channel count: {layer.ChannelsCount}, First channel length: `NotSupportedException`");
// layer.ChannelInformation = channelInformation; // throws NotSupportedException
Aspose.PSD FOSS for .NET מורשה תחת רישיון MIT. ניתן להשתמש, לשנות, ולהפיץ אותו בהתאם לתנאי רישיון MIT, כולל במוצרים מסחריים.
ראה את סעיף ההתקנה למעלה עבור פקודת ההתקנה הנוכחית.
הוא טוען ושומר קבצי PSD ו-PSB (מסמך גדול של Photoshop). הוא אינו מרנדר או מייצא נתוני פיקסלים לפורמטים רסטריים אחרים כגון PNG או JPEG.
PsdImage (מחלקה משנה של Image). טען מסמך עם PsdImage.Load, ואז קרא את אוסף ה-Layers ואת מאפייני הכותרת.
כן — Layer חושף setter עובד למספר מאפיינים, כגון נראות ושם, ו-PsdImage.Layers עצמו כולל setter עובד להחלפת האוסף. כמה מאפיינים ספציפיים (מידע ערוץ, נתוני מסכה, טווחי מיזוג, וחלק מהמשאבים ברמת המסמך) הם קריאה-בלבד בבנייה הזו של FOSS ומזרקים NotSupportedException אם מנסים להגדירם.