ملحق DICOM
عرض الصور الطبية باستخدام DicomPlugin
يضيف ملحق DICOM إمكانية عرض الصور الطبية إلى Doconut: تُعرض ملفات DICOM متعددة الإطارات كملخص متحرك، أو إطارات فردية، أو كلاهما. DICOM هو تنسيق يعتمد على الملحق فقط — بدون هذا الملحق (وبإمكانات الترخيص الخاصة به)، لا يمكن فتح ملفات .dcm على الإطلاق.
على .NET Framework 4.7.2، تُعرض ملفات DICOM بالكامل — الصفحات، الإطارات، والرسوم المتحركة — لكن البيانات الوصفية التقنية (علامات DICOM) غير متوفرة.
Viewer.GetDicomMetadataAsyncدائمًا تُعيدnull، وإجابة طلب البيانات الوصفية للودجت هي501 Not Implemented. استخدمDoconut.NET8إذا كان تطبيقك يحتاج إلى العلامات.
تثبيت الحزمة
Install-Package Doconut.NETFramework.Dicomاحتفظ بحزمة DICOM بنفس الإصدار كما هو في Doconut.NETFramework.
تسجيل الملحق
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});يقوم الملحق (Name: "Doconut DICOM Viewer") بتسجيل عارضات لامتدادات .dcm و .ima، مقيدة بقدرة Dicom. إذا لم تمنح الترخيص ذلك، فإن DoconutHost.Initialize يطرح استثناءً من Application_Start وتجيب الموقع على كل طلب بـ 500 فارغ (السبب موجود في سجل أحداث Windows). نظرًا لعدم وجود عارض مدمج يتعامل مع هذه الصيغ، فإن فتح أحدها يفشل تمامًا إذا أصبحت القدرة غير متاحة لاحقًا:
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 (افتراضي) | الصفحة 1 = GIF متحرك، الصفحات 2..N = إطارات ثابتة | نظرة عامة وتفصيل في مستند واحد |
يتم التحكم في توقيت الرسوم المتحركة بواسطة AnimationFrameDelayMs (الافتراضي 100 مللي ثانية = 10 إطار في الثانية؛ توقيت GIF يستخدم وحدات 10 مللي ثانية) و LoopCount (0 = تكرار إلى الأبد).
يكتشف العارض أن الصفحة 1 متحركة بإرسال طلب HEAD لها. لذا يجب على معالج DocImage.axd قبول HEAD في Web.config (verb="GET,HEAD,POST", انظر التثبيت); بدون ذلك، يرد IIS بـ 404 قبل تشغيل Doconut ولا يعمل اكتشاف الرسوم المتحركة أبدًا.
الدقة
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 الوصفية
var metadata = await viewer.GetDicomMetadataAsync(token);
// On .NET Framework this is always null: the DICOM metadata reader is not available for this
// target. Pages, frames and animation render normally.الطريقة موجودة في هذه الحزمة حتى يتم تجميع الشيفرة المشتركة مع حزمة .NET 8، لكن قراءة علامات DICOM تحتاج إلى مكوّن لا يتوفر بنسخة .NET Framework. خطط لواجهة المستخدم بدونها — على سبيل المثال، أخفِ لوحة البيانات الوصفية عندما تكون النتيجة null.
مرجع الإعداد الكامل
الجدول الكامل لخصائص DicomConfig موجود في تكوينات الصيغ. في اختيار حسب الامتداد، يبدو حالة DICOM هكذا:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };العلامة المائية وسلوك الذاكرة
قرار العلامة المائية للصفحة العادية ينطبق أيضًا على مخرجات DICOM. بالنسبة للمخرجات المتحركة، يتم وضع العلامة على كل إطار GIF، لذا تظل العلامة مرئية طوال التشغيل. يتم استخدام DocOptions.Watermark المخصص فقط عندما يسمح الترخيص بالعلامات المائية المخصصة؛ ولا يمكنه استبدال علامة مائية تجريبية.
يمكن للدراسات متعددة الإطارات إنتاج كل من الرسوم المتحركة وصفحة ثابتة لكل إطار. AnimationAndFrames يوفر أغنى تنقل لكنه أيضًا أعلى تكلفة في العرض والذاكرة — وعلى خادم واحد تلك الذاكرة تخص عملية عامل IIS. للدراسات الكبيرة:
- استخدم
FramesOnlyعندما تكون فحص الإطارات أهم من التشغيل. - تجنّب رفع محوري الدقة معًا دون قياس الذاكرة.
- أغلق الجلسة صراحةً عندما لا تكون الدراسة مفتوحة بعد الآن.
- احتفظ بـ
CachePagesمفعّلاً فقط عندما يكون الوصول المتكرر يستحق الصور المحتفظ بها.
استكشاف الأخطاء وإصلاحها
| العَرَض | الفحص |
|---|---|
.dcm يُبلغ عنه غير مدعوم | تسجيل DicomPlugin ونشر الحزمة |
كل طلب يرد بـ 500 فارغ بعد إضافة الملحق | الترخيص يمنح Dicom — سجل أحداث Windows، مصدر ASP.NET |
| تظهر صفحة واحدة فقط | قد يكون المصدر إطارًا واحدًا، أو DisplayMode هو AnimationOnly |
| الصفحة 1 لا تتحرك | المعالج في Web.config يقبل HEAD |
| الرسوم المتحركة سريعة جدًا أو بطيئة | AnimationFrameDelayMs؛ توقيت GIF يستخدم وحدات 10 مللي ثانية |
| الذاكرة تزداد مع ملفات متعددة الإطارات الكبيرة | وضع العرض، الدقة، ذاكرة التخزين المؤقت للصفحات، وإغلاق الجلسة صراحةً |
البيانات الوصفية دائمًا null | متوقع في هذه الحزمة — انظر الملاحظة في الأعلى |
هل كانت هذه الصفحة مفيدة؟