افزونه DICOM
مشاهده تصاویر پزشکی با DicomPlugin
افزونه DICOM امکان مشاهده تصاویر پزشکی را به Doconut اضافه میکند: فایلهای DICOM چند‑قابلی بهصورت یک نمای کلی انیمیشنی، قابهای جداگانه یا هر دو رندر میشوند. DICOM یک فرمت فقط افزونهای است — بدون این افزونه (و قابلیت مجوز آن)، فایلهای .dcm بههیچوجه قابل باز شدن نیستند.
نصب بسته
dotnet add package Doconut.NET6.Dicomدستور بدون نسخه، آخرین نسخهٔ پایدار را نصب میکند. برای قفل کردن افزونه به نسخهٔ ۲۶.۷.۰ فعلی، نسخه را بهصورت جداگانه پاس دهید:
dotnet add package Doconut.NET6.Dicom --version 26.7.0پکیج DICOM را با همان نسخهٔ Doconut.NET6 نگه دارید. شناسهٔ پکیج Doconut.NET6.Dicom است؛ .26.7.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 | صفحه ۱ = GIF انیمیشنی که تمام قابها را حلقه میزند | مرور سریع سینمایی |
FramesOnly | صفحات ۱..N = یک PNG ثابت برای هر قاب | ناوبری تشخیصی قاب به قاب |
AnimationAndFrames (default) | صفحه ۱ = GIF انیمیشنی، صفحات ۲..N = قابهای ثابت | نمای کلی + جزئیات در یک سند |
زمانبندی انیمیشن توسط AnimationFrameDelayMs (بهصورت پیشفرض ۱۰۰ ms = ۱۰ FPS؛ دقت GIF به واحدهای ۱۰ ms) و LoopCount (0 = حلقه بینهایت) کنترل میشود.
وضوح
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 در .NET 6
رندر صفحات DICOM، قابهای جداگانه، انیمیشن، تبدیلها و واترمارکگذاری پشتیبانی میشوند. فرادادهٔ برچسبهای فنی در بستهٔ .NET 6 موجود نیست زیرا خوانندهٔ فراداده نسخهٔ .NET 6 ندارد.
Viewer.GetDicomMetadataAsync(token) بنابراین برای یک جلسهٔ DICOM مقدار null برمیگرداند و یک هشدار یکباره ثبت میکند. درخواست میانیافزار مربوطه ?token=…&meta پاسخ HTTP 501 Not Implemented با کد خطای ثابت dicom_metadata_unsupported میدهد. هنگام نیاز به فرادادهٔ فنی DICOM، بستهٔ .NET 8 را استفاده کنید.
مرجع کامل پیکربندی
جدول کامل ویژگیهای DicomConfig در مرجع API → تنظیمات فرمتها قرار دارد. یک مثال تولیدی از سوئیچ بر‑پایهٔ پسوند در برنامهٔ مرجع:
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },واترمارک و رفتار حافظه
تصمیم واترمارک صفحهٔ معمولی نیز برای خروجی DICOM اعمال میشود. برای خروجی انیمیشنی، هر قاب GIF علامتگذاری میشود تا نشان در طول پخش قابل مشاهده بماند. DocOptions.Watermark سفارشی فقط زمانی استفاده میشود که مسیر مجوز اجازهٔ واترمارکهای سفارشی را بدهد؛ نمیتواند جایگزین واترمارک ارزیابی شود.
مطالعات چند‑قابلی میتوانند هم یک انیمیشن و هم یک صفحهٔ ثابت برای هر قاب تولید کنند. AnimationAndFrames غنیترین ناوبری را فراهم میکند اما بالاترین هزینهٔ رندر و کش را دارد. برای مطالعات بزرگ:
FramesOnlyرا زمانی استفاده کنید که بررسی قاب مهمتر از پخش سینمایی باشد؛- بدون اندازهگیری حافظه، افزایش هر دو محور وضوح را اجتناب کنید؛
- هنگامی که مطالعه دیگر باز نیست، جلسه را بهصورت صریح ببندید؛
CachePagesرا فقط زمانی فعال نگه دارید که مزایای دسترسی مکرر از نگهداری تصاویر بیشتر باشد.
عیبیابی
| علائم | بررسی |
|---|---|
.dcm بهعنوان پشتیبانینشده گزارش میشود | ثبت DicomPlugin و استقرار بسته |
| راهاندازی پس از افزودن افزونه شکست میخورد | مجوز بارگذاریشده Dicom را اعطا میکند |
| فقط یک صفحه ظاهر میشود | منبع ممکن است تک‑قاب باشد، یا DisplayMode برابر AnimationOnly باشد |
| انیمیشن خیلی سریع یا خیلی کند است | AnimationFrameDelayMs؛ زمانبندی مؤثر GIF از واحدهای ۱۰ ms استفاده میکند |
| حافظه در فایلهای بزرگ چند‑قابلی افزایش مییابد | حالت نمایش، وضوح، کش صفحات و بستن صریح جلسه |
فراداده null است، یا &meta مقدار 501 برمیگرداند | محدودیت مورد انتظار .NET 6؛ رندر تحت تأثیر نیست |
آیا این صفحه مفید بود؟