افزونه DICOM
مشاهده تصاویر پزشکی با DicomPlugin
افزونه DICOM قابلیت مشاهده تصاویر پزشکی را به Doconut اضافه میکند: فایلهای چند‑قاب DICOM به صورت یک نمای کلی انیمیشنی، قابهای جداگانه یا هر دو رندر میشوند. DICOM یک فرمت فقط افزونهای است — بدون این افزونه (و قابلیت لایسنس آن)، فایلهای .dcm به هیچوجه نمیتوانند باز شوند.
نصب بسته
dotnet add package Doconut.NET8.Dicomدستور بدون نسخه، آخرین نسخه پایدار را نصب میکند. برای قفل کردن افزونه به نسخهٔ ۲۶.۷.۰ فعلی، نسخه را بهصورت جداگانه پاس دهید:
dotnet add package Doconut.NET8.Dicom --version 26.7.0پکیج DICOM را با همان نسخهٔ Doconut.NET8 نگه دارید. شناسهٔ پکیج Doconut.NET8.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
برای نشستهایی که از طریق این افزونه باز میشوند، Viewer فرادادهٔ برچسبها را در دسترس میگذارد:
var metadata = await viewer.GetDicomMetadataAsync(token);
// null when the session isn't a DICOM documentمرجع کامل تنظیمات
جدول کامل ویژگیهای 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 است | توکن از طریق افزونه DICOM باز نشده یا منقضی شده است |
آیا این صفحه مفید بود؟