מבוא
Aspose.PSD FOSS עבור .NET טוען, בודק ושומר מסמכי PSD ו-PSB דרך קבוצת מחלקות קטנה. פוסט זה מתבונן בחלקים של הליבה API שהפוסט המקדמי לא כיסה לעומק: יחסי הירושה Image/PsdImage, סוגי ערכי הגאומטריה המשמשים בכל הספרייה, וכיצד הספרייה מדווחת על שגיאות טעינה ושמירה.
מה כלול
תמונה ו-PsdImage
Image היא מחלקת בסיס מופשטת ומחשיפה את Width, Height, Bounds, Load(), Save() ו-Dispose(). PsdImage היא המימוש הסגור והמוגש שמוחזר על-ידי Image.Load() עבור קלט PSD/PSB — המרת התוצאה ל-PsdImage חושפת את שאר פני המסמך: ColorMode, Version, Layers, Compression, BitsPerChannel ועוד.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
סוגי ערכי גאומטריה
Point, Size, Rectangle ו-RectangleF הם סוגי הערכים המשמשים להגבלות ולקואורדינטות בכל ה-API — Layer.Bounds ו-Image.Bounds הם שניהם Rectangle, ו-PsdImage.Size הוא Size. Rectangle מכיל שיטות גאומטריה אמיתיות: Contains(), Intersect(), Union(), Inflate() ו-FromLeftTopRightBottom(), בין היתר.
Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;
bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");
בלוקים של משאבים וחריגות
PsdImage.ImageResources מחזיר את המערך ResourceBlock[] שעובד — כל בלוק חושף את ID, DataSize, Name ו-Signature. בבנייה הזו של קוד פתוח, ניתן לקרוא את ImageResources, GlobalLayerResources, ActiveLayer ו-HasTransparencyData אך לא ניתן לשנותם — לכל אחד מהם יש setter שמטיל NotSupportedException אם הוא נקרא, ולכן יש להתייחס אליהם כקריאה בלבד למרות שהם מופיעים כמאפיינים.
שגיאות טעינה ושמירה מופיעות כשני סוגי חריגה ייעודיים: PsdLoadException כאשר לא ניתן לנתח מסמך, ו-PsdSaveException כאשר לא ניתן לכתוב את המסמך חזרה.
try
{
using var image = (PsdImage)Image.Load(inputPath);
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}
התחלה מהירה
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing Aspose.PSD.FileFormats.Psd;
try
{
using var image = (PsdImage)Image.Load("input.psd");
Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Load failed: {ex.Message}");
}
פורמטים נתמכים
| פורמט | סיומת | קריאה | כתיבה |
|---|---|---|---|
| מסמך פוטושופ | psd | ✓ | ✓ |
| מסמך פוטושופ גדול | psb | ✓ | ✓ |
קוד פתוח & רישוי
Aspose.PSD FOSS עבור .NET מורשה תחת רישיון MIT וניתן להשתמש בו במוצרים מסחריים ללא תמלוגים, ללא סימן מים של הערכה או מגבלת שימוש.
החבילה נמצאת בגרסה 1.0.0 ודורשת רק .NET 10.0 בזמן ריצה — אין לה תלות של צד שלישי נוספת.