افزونه 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 خالی پاسخ میدهد (دلیل آن در لاگ رویداد ویندوز است). چون هیچ ویوئر داخلیای این فرمتها را پشتیبانی نمیکند، باز کردن یک فایل در صورت عدم دسترس بودن این قابلیت بهصورت کامل شکست میخورد:
LicenseException: This document type requires the 'Dicom' plugin license.باز کردن یک فایل DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});حالتهای نمایش
فایلهای DICOM چند‑قابلی میتوانند به سه شکل ارائه شوند (DicomDisplayMode):
| حالت | صفحات تولید شده | موارد استفاده |
|---|---|---|
AnimationOnly | صفحه ۱ = GIF انیمیشنی که تمام قابها را حلقه میزند | مرور سریع سینمایی |
FramesOnly | صفحات ۱..N = یک PNG ثابت برای هر قاب | ناوبری تشخیصی قاب به قاب |
AnimationAndFrames (default) | صفحه ۱ = GIF انیمیشنی، صفحات ۲..N = قابهای ثابت | نمای کلی و جزئیات در یک سند |
زمانبندی انیمیشن توسط AnimationFrameDelayMs کنترل میشود (بهصورت پیشفرض ۱۰۰ میلیثانیه = ۱۰ فریم بر ثانیه؛ زمانبندی GIF از واحدهای ۱۰ میلیثانیه استفاده میکند) و LoopCount (0 = حلقه بینهایت).
ویوئر تشخیص میدهد که صفحه ۱ انیمیشنی است با ارسال یک درخواست HEAD برای آن. بههمین دلیل هندلر DocImage.axd باید در Web.config HEAD را بپذیرد (verb="GET,HEAD,POST", به نصب); بدون این تنظیم، IIS قبل از اجرای Doconut پاسخ 404 میدهد و تشخیص انیمیشن هرگز کار نمیکند.
وضوح
DicomConfig بهصورت پیشفرض با ۱۰۰ DPI برای هر محور رندر میشود. اگر HorizontalResolution/VerticalResolution را بهصورت صریح تنظیم نکنید، این مقادیر از BaseConfig.ImageResolution پیروی میکنند (در صورتی که تنظیم شده باشد) و فقط در غیر این صورت به ۱۰۰ باز میگردند.
// 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 را میدهد — لاگ رویداد ویندوز، منبع ASP.NET |
| فقط یک صفحه ظاهر میشود | منبع ممکن است تک‑قاب باشد، یا DisplayMode برابر AnimationOnly باشد |
| صفحه ۱ انیمیشن نمیشود | هندلر در Web.config HEAD را میپذیرد |
| انیمیشن خیلی سریع یا خیلی کند است | AnimationFrameDelayMs؛ زمانبندی GIF از واحدهای ۱۰ میلیثانیه استفاده میکند |
| حافظه در فایلهای بزرگ چند‑قابلی رشد میکند | حالت نمایش، وضوح، کش صفحات، و بستن صریح جلسه |
متادیتا همیشه null است | در این بسته انتظار میرود — به یادداشت بالایی مراجعه کنید |
آیا این صفحه مفید بود؟