כיצד לעבוד עם Aspose.PSD FOSS Core API ב-.NET
Aspose.PSD FOSS עבור .NET טוען ובוחן את מבנה המסמך PSD/PSB דרך PsdImage, תת-מחלקה של Image. מאמר זה מכסה טעינת מסמך, קריאת הכותרת והמשאבים של התמונות, ושמירתו חזרה לדיסק.
מדריך שלב-אחר-שלב
שלב 1: התקנת החבילה
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildשלב 2: ייבוא המחלקות הדרושות
using Aspose.PSD.FileFormats.Psd;שלב 3: טעינת מסמך PSD/PSB
PsdImage.Load פותח מסמך מנתיב קובץ או מזרם:
using var image = PsdImage.Load("input.psd");שלב 4: בדוק את כותרת המסמך
PsdImage מציג שדות כותרת שנקראו מהמסמך המתפרק: Width, Height, BitsPerChannel, ColorMode (ערך ColorModes), ו-Compression (ערך CompressionMethod):
Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}"); // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");ערכי ColorModes כוללים את Bitmap, Grayscale, Indexed, Rgb ו-Cmyk, בין היתר (Multichannel, Duotone, Lab). ערכי CompressionMethod הם Raw, RLE, ZipWithoutPrediction, וגרסה ZIP-עם-תחזית.
שלב 5: קריאת בלוקי משאבי תמונה
ImageResources מחזיר את רשומות ResourceBlock שנפרסו של המסמך. כל בלוק מציג את ID, Name ו-Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources הוא קריאה בלבד בבנייה הזו של FOSS — השמת ערך אליו גורמת לשגיאה NotSupportedException (ראה מגבלות ידועות ב- FAQ).
שלב 6: שמירת המסמך
image.Save("output.psd");בעיות נפוצות ופתרונות
PsdLoadException בזמן טעינת קובץ. הקלט אינו מסמך PSD/PSB תקף, או שהכותרת שלו נכשלה באימות. ודא שהקובץ הוא קובץ PSD/PSB אמיתי לפני הטעינה.
NotSupportedException בזמן קביעת ImageResources or GlobalLayerResources. מגדירי ערכים אלה אינם נתמכים בבנייה הזו של FOSS. התייחס ImageResources כקריאה בלבד.
ColorMode or Compression מדפיס כערך מספרי במקום שם. המרה של המאפיין לסוג המונה שלו במפורש, או השתמש .ToString(), כדי לקבל את שם הקריאה (ColorModes.Rgb, לא 3).
שאלות נפוצות
האם ניתן לטעון קובץ PSD מזרם במקום ממסלול קובץ?
כן — PsdImage.Load כולל overload שמקבל Stream.
האם ImageResources כולל נתוני שכבה?
לא. ImageResources מחזיק בלוקים של משאבי רמת-מסמך (מפורשים ממקטע משאבי התמונה של PSD). נתוני רמת-שכבה נקראים דרך PsdImage.Layers — ראה עבודה עם שכבות.
האם PsdImage.Version הוא גרסת פורמט קובץ PSD?
לא. PsdImage.Version מדווח על מספר גרסה פנימי של API תואם ל-Aspose.PSD (כעת 6) — זה אינו קשור לשאלה האם הקובץ שהוטען הוא PSD או PSB.