افزونه DICOM

مشاهده تصاویر پزشکی با DicomPlugin

افزونه DICOM قابلیت مشاهده تصاویر پزشکی را به Doconut اضافه می‌کند: فایل‌های چند‑قاب DICOM به صورت یک نمای کلی انیمیشنی، قاب‌های جداگانه یا هر دو رندر می‌شوند. DICOM یک فرمت فقط افزونه‌ای است — بدون این افزونه (و قابلیت لایسنس آن)، فایل‌های .dcm به هیچ‌وجه نمی‌توانند باز شوند.

نصب بسته

bash
dotnet add package Doconut.NET8.Dicom

دستور بدون نسخه، آخرین نسخه پایدار را نصب می‌کند. برای قفل کردن افزونه به نسخهٔ ۲۶.۷.۰ فعلی، نسخه را به‌صورت جداگانه پاس دهید:

bash
dotnet add package Doconut.NET8.Dicom --version 26.7.0

پکیج DICOM را با همان نسخهٔ Doconut.NET8 نگه دارید. شناسهٔ پکیج Doconut.NET8.Dicom است؛ .26.7.0 فقط در نام فایل .nupkg دانلود شده ظاهر می‌شود.

ثبت افزونه

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

افزونه (Name: "Doconut DICOM Viewer") برای پسوندهای .dcm و .ima ویوئرها را ثبت می‌کند که توسط قابلیت Dicom محدود شده‌اند. یک مجوز موقت یا ناکافی معمولاً در زمان AddDoconut() شکست می‌خورد. چون هیچ ویوئر داخلی این فرمت‌ها را پشتیبانی نمی‌کند، در صورتی که بعداً قابلیت در دسترس نباشد، دروازه زمان اجرا نیز به‌صورت سخت‌گیرانه شکست می‌خورد:

text
LicenseException: This document type requires the 'Dicom' plugin license.

باز کردن یک فایل DICOM

csharp
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 پیروی می‌کنند (در صورتی که تنظیم شده باشد) و فقط سپس به ۱۰۰ باز می‌گردند.

csharp
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };

// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

خواندن فراداده‌های DICOM

برای نشست‌هایی که از طریق این افزونه باز می‌شوند، Viewer فرادادهٔ برچسب‌ها را در دسترس می‌گذارد:

csharp
var metadata = await viewer.GetDicomMetadataAsync(token);
// null when the session isn't a DICOM document

مرجع کامل تنظیمات

جدول کامل ویژگی‌های DicomConfig در مرجع API → تنظیمات فرمت‌ها قرار دارد. یک مثال تولیدی از سوئیچ بر پایهٔ پسوند در برنامهٔ مرجع:

csharp
".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 باز نشده یا منقضی شده است

آیا این صفحه مفید بود؟