معرفی
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 را در اختیار میگذارد. در این ساختار FOSS، 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 در زمان اجرا نیاز دارد — هیچ وابستگی شخص ثالث دیگری ندارد.