مقدمة

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 دون إمكانية إعادة تعيينها — كل منها يمتلك مُعيّن يطرح 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 build
using 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 أثناء التشغيل — لا توجد لها أي تبعيات طرف ثالث أخرى.


البدء

الموارد ذات الصلة