ملحق DICOM
عرض الصور الطبية باستخدام DicomPlugin
يضيف ملحق DICOM إمكانية عرض الصور الطبية إلى Doconut: يتم عرض ملفات DICOM متعددة الإطارات كملخص متحرك، أو إطارات فردية، أو كليهما. DICOM هو تنسيق يقتصر على الملحق — بدون هذا الملحق (وإمكانية الترخيص الخاصة به)، لا يمكن فتح ملفات .dcm على الإطلاق.
تثبيت الحزمة
dotnet add package Doconut.NETStandard.Dicomيُثبت الأمر غير المحدد للإصدار أحدث نسخة مستقرة. لتثبيت الملحق على الإصدار الحالي 26.8.0، مرّر الإصدار بشكل منفصل:
dotnet add package Doconut.NETStandard.Dicom --version 26.8.0احرص على أن تكون حزمة DICOM بنفس نسخة Doconut.NETStandard. معرف الحزمة هو Doconut.NETStandard.Dicom؛ يظهر .26.8.0 فقط في اسم ملف .nupkg الذي تم تنزيله.
تسجيل الملحق
builder.Services.AddDoconut(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});يقوم الملحق (Name: "Doconut DICOM Viewer") بتسجيل عارضات لامتدادات .dcm و .ima، مقيدة بميزة Dicom. عادةً ما يؤدي عدم وجود أو عدم كفاية الترخيص غير المؤقت إلى فشل أثناء AddDoconut(). نظرًا لعدم وجود عارض مدمج يتعامل مع هذه الصيغ، فإن بوابة وقت التشغيل تفشل أيضًا بقوة إذا أصبحت الميزة غير متاحة لاحقًا:
LicenseException: This document type requires the 'Dicom' plugin license.فتح ملف DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});أوضاع العرض
يمكن عرض ملفات DICOM متعددة الإطارات بثلاث طرق (DicomDisplayMode):
| الوضع | الصفحات المنتجة | الاستخدام |
|---|---|---|
AnimationOnly | الصفحة 1 = GIF متحرك يكرر جميع الإطارات | مراجعة سينمائية سريعة |
FramesOnly | الصفحات 1..N = PNG ثابت واحد لكل إطار | تنقل تشخيصي إطارًا بإطار |
AnimationAndFrames (default) | الصفحة 1 = GIF متحرك، الصفحات 2..N = إطارات ثابتة | نظرة عامة + تفاصيل في مستند واحد |
يتم التحكم في توقيت الرسوم المتحركة بواسطة AnimationFrameDelayMs (القيمة الافتراضية 100 مللي ثانية = 10 إطار في الثانية؛ دقة GIF هي وحدات 10 مللي ثانية) و LoopCount (0 = تكرار إلى الأبد).
الدقة
DicomConfig يعرض بدقة 100 DPI لكل محور افتراضيًا. لخصائص الدقة سلسلة احتياطية تستحق المعرفة: إذا لم تقم بتعيين HorizontalResolution/VerticalResolution صراحةً، فإنها تتبع BaseConfig.ImageResolution عندما يتم تكوينه، ثم تعود إلى 100 فقط.
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };توفر بيانات تعريف DICOM على .NET Standard
يتم دعم عرض صفحات DICOM، الإطارات الفردية، الرسوم المتحركة، التحويلات، وإضافة العلامة المائية. بيانات تعريف العلامات التقنية غير متوفرة في حزمة .NET Standard لأن قارئ البيانات يرافق فقط نسخة .NET 8.
لذلك تُعيد Viewer.GetDicomMetadataAsync(token) القيمة null لجلسة DICOM وتسجل تحذيرًا لمرة واحدة. طلب الوسيط المقابل ?token=…&meta يُعيد HTTP 501 Not Implemented مع رمز الخطأ المستقر dicom_metadata_unsupported. استخدم حزمة .NET 8 عندما تكون بيانات تعريف DICOM التقنية متطلبًا.
مرجع الإعداد الكامل
جدول خصائص DicomConfig الكامل موجود في مرجع API → إعدادات الصيغ. مثال إنتاجي من تبديل الامتداد في تطبيق المرجع:
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },العلامة المائية وسلوك الذاكرة
ينطبق قرار العلامة المائية للصفحة العادية أيضًا على مخرجات DICOM. بالنسبة للمخرجات المتحركة، يتم وضع علامة على كل إطار GIF بحيث تظل العلامة مرئية طوال التشغيل. يُستخدم DocOptions.Watermark المخصص فقط عندما يسمح مسار الترخيص بالعلامات المائية المخصصة؛ ولا يمكنه استبدال علامة التقييم المائية.
يمكن للدراسات متعددة الإطارات إنشاء كل من الرسوم المتحركة وصفحة ثابتة لكل إطار. يوفر AnimationAndFrames أغنى تنقل لكنه أيضًا يحمل أعلى تكلفة للعرض والذاكرة المؤقتة. للدراسات الكبيرة:
- استخدم
FramesOnlyعندما تكون فحص الإطارات أهم من التشغيل السينمائي؛ - تجنب زيادة محوري الدقة دون قياس الذاكرة؛
- أغلق الجلسة صراحةً عندما لا تكون الدراسة مفتوحة بعد الآن؛
- احتفظ بتمكين
CachePagesفقط عندما تفوق فوائد الوصول المتكرر الصور المحتفظ بها.
استكشاف الأخطاء وإصلاحها
| العَرَض | التحقق |
|---|---|
تم الإبلاغ عن أن .dcm غير مدعوم | تسجيل DicomPlugin ونشر الحزمة |
| فشل بدء التشغيل بعد إضافة الملحق | الترخيص المحمّل يمنح Dicom |
| ظهور صفحة واحدة فقط | قد يكون المصدر إطارًا واحدًا، أو أن DisplayMode هو AnimationOnly |
| الرسوم المتحركة سريعة جدًا أو بطيئة | AnimationFrameDelayMs؛ توقيت GIF الفعلي يستخدم وحدات 10 مللي ثانية |
| الذاكرة تزداد في ملفات متعددة الإطارات الكبيرة | وضع العرض، الدقة، ذاكرة التخزين المؤقت للصفحات، وإغلاق الجلسة صراحةً |
البيانات الوصفية هي null، أو أن &meta تُعيد 501 | قيد متوقع لهذه الحزمة؛ لا يتأثر العرض |
هل كانت هذه الصفحة مفيدة؟