كيفية العمل مع 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 هي للقراءة فقط في هذا البناء المفتوح المصدر — الإسناد إليها يثير استثناء NotSupportedException (انظر القيود المعروفة في الـ FAQ).
الخطوة 6: حفظ المستند
image.Save("output.psd");المشكلات الشائعة والحلول
PsdLoadException عند تحميل ملف. الإدخال ليس مستند PSD/PSB صالحًا، أو فشل الترويس في التحقق. تأكد من أن الملف هو ملف PSD/PSB أصلي قبل التحميل.
NotSupportedException عند الضبط ImageResources or GlobalLayerResources. هذه الدوال الضابطة غير مدعومة في هذا البناء المفتوح المصدر. اعتبر ImageResources كقيمة للقراءة فقط.
ColorMode or Compression يُطبع كقيمة رقمية بدلاً من اسم. حوّل الخاصية إلى نوع التعداد الخاص بها صراحةً، أو استخدم .ToString(), للحصول على الاسم القابل للقراءة (ColorModes.Rgb, ليس 3).
الأسئلة المتكررة
هل يمكنني تحميل ملف PSD من تدفق بدلاً من مسار ملف؟
نعم — PsdImage.Load يحتوي على نسخة محملة تقبل Stream.
هل يتضمن ImageResources بيانات الطبقة؟
لا. ImageResources يحتوي على كتل موارد على مستوى المستند (تم تحليلها من قسم موارد صور PSD). يتم قراءة بيانات المستوى الطبقي من خلال PsdImage.Layers — انظر العمل مع الطبقات.
هل PsdImage.Version هو إصدار تنسيق ملف PSD؟
لا. PsdImage.Version يُبلغ عن رقم إصدار API داخلي متوافق مع Aspose.PSD (حاليًا 6) — وهو غير مرتبط بما إذا كان الملف المحمل هو PSD أم PSB.