النواة API

النواة API

Aspose.Imaging FOSS للواجهة العامة الكاملة لـ .NET هي ثلاث فئات: ImageProbe (الواجهة الثابتة)، ImageInfo (قيمة النتيجة)، و ImageFormat (تعداد الصيغة). تغطي هذه الصفحة كيفية تجميعها كعقد، بما يتجاوز جولة كل ميزة في الميزات والوظائف.


عقد الفئات الثلاث

  • ImageProbe — ثابت، بدون حالة. كل استدعاء مستقل؛ لا شيء لتكوينه أو التخلص منه.
  • ImageInfo — مختوم، غير قابل للتغيير. جميع الخصائص الخمس (Format, Width, Height, BitDepth, FrameCount) للقراءة فقط بمجرد إنشائها.
  • ImageFormat — تعداد (enum) يحتوي على قيمة واحدة لكل تنسيق معترف به، بالإضافة إلى Unknown.
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format;   // always set
int? width = info.Width;            // set only when the format's header carries it

إنشاء ImageInfo مباشرةً

منشئ ImageInfo عام — يلزم فقط format، وكل معلمة أخرى تُفترض قيمتها null. هذا مفيد لاختبارات الوحدة التي تحتاج نتيجة بديلة دون فحص ملف حقيقي:

using Aspose.Imaging.Foss;

// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);

// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);

لا توجد طريقة مقابلة لـ mutate an ImageInfo بعد الإنشاء — كل خاصية للقراءة فقط، لذا فإن النسخة المستكشفة أو المُنشأة آمنة للتداول وتخزينها مؤقتًا دون نسخ دفاعي.


اختيار التحميل الزائد المناسب

Overloadاستخدم عندما
ImageProbe.ProbeFile(path)لديك مسار ملف وتريد الـ ImageInfo الكامل
ImageProbe.Probe(stream)لديك بالفعل Stream مفتوح (قابل للتمرير أو لا) وتريد الـ ImageInfo الكامل
ImageProbe.Probe(data)لديك البايتات بالفعل في الذاكرة وتريد الـ ImageInfo الكامل
ImageProbe.DetectFormat(stream) / (data)أنت بحاجة فقط إلى التفرع بناءً على ImageFormat — تخطى تحليل الترويسة ما بعد توقيع الصيغة

ProbeFile يفتح ويقرأ الملف نفسه — لا حاجة لفتح FileStream أولاً فقط لاستدعاء Probe(stream).


فحص الدليل دفعيًا

نظرًا لأن ImageProbe لا يرمي استثناءً أبدًا، يمكن لعملية مسح الدليل استدعاؤه في حلقة ضيقة دون try/catch لكل ملف:

using Aspose.Imaging.Foss;

foreach (var path in Directory.GetFiles("incoming"))
{
    var info = ImageProbe.ProbeFile(path);

    if (info.Format == ImageFormat.Unknown)
    {
        Console.WriteLine($"{path}: not a recognized image format, skipping");
        continue;
    }

    Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}

أي ملف لا يتطابق رأسه مع أحد الصيغ الـ11 المعروفة يُحوَّل إلى ImageFormat.Unknown بدلاً من الرمي — الحلقة أعلاه لا تحتاج أبدًا إلى كتلة catch.


عقد عدم الرمي

هذا ليس سلوكًا عَرَضيًا — إنه جزء متعمد من عقد API. إذا تم قطع رأس تنسيق معترف به أو كان مشوهًا خلال عملية التحليل، فإن ImageProbe لا يزال يُعيد ImageInfo مع ضبط Format على التنسيق الذي تم التعرف عليه؛ لا يمرر استثناء تحليل إلى المستدعي. فقط Format مضمونة — عُد باقي الخصائص كاختيارية بغض النظر عن التنسيق المكتشف.


المشكلات الشائعة

المشكلةالسببالإصلاح
المكوّن ImageInfo لا يتطابق مع نتيجة فحص حقيقيةالكائنات المُنشأة يدويًا لا تتحقق من اتساق الحقولاستخدم الإنشاء اليدوي فقط للنسخ المزدوجة للاختبار، وليس كبديل عن فحص الملفات الحقيقية
استدعاء Probe عندما يكفي DetectFormatتحليل رؤوس غير ضروري عندما يلزم فقط التنسيقاستخدم DetectFormat إذا لم تقرأ أبداً Width/Height/BitDepth/FrameCount
تنسيق Unknown لملف تتوقع أن يكون مدعومًاالرأس لا يطابق أيًا من الـ 11 توقيعًا المعروفة، أو أن الملف بصيغة مختلفة تمامًاتحقق من الملف مقابل قائمة الصيغ المدعومة

FAQ

هل يمكنني إنشاء فئة فرعية من ImageInfo أو ImageProbe؟

لا. ImageInfo هو sealed وImageProbe هو static — لا أحد منهما مصمم لإنشاء فئات فرعية أو للتنفيذ عبر الوراثة.

هل ImageProbe آمن للخيوط؟

ImageProbe لا يحتفظ بحالة قابلة للتغيير بين الاستدعاءات — كل استدعاء إلى Probe أو ProbeFile أو DetectFormat يكون مستقلاً، مما يجعل الاستدعاءات المتزامنة من عدة خيوط آمنة.

هل أحتاج إلى التخلص من أي شيء؟

لا. ImageProbe لا يمتلك موارد IDisposable خاصة به. إذا قمت بتمرير Stream التي فتحتها بنفسك، فإنك تظل مسؤولاً عن التخلص من ذلك التدفق — Probe(stream) لا يغلقه.


API Reference ملخص

الفئة / الطريقةوصف
ImageProbe.ProbeFile(path)فحص ملف بالمسار
ImageProbe.Probe(stream)تحقق من Stream
ImageProbe.Probe(data)تحقق من byte[]
ImageProbe.DetectFormat(stream)تنسيق فقط، من Stream
ImageProbe.DetectFormat(data)تنسيق فقط، من byte[]
ImageInfo(format, width, height, bitDepth, frameCount)منشئ عام — مطلوب فقط format
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCountخصائص النتيجة للقراءة فقط
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

انظر أيضاً

 العربية