افزونه DICOM

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

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

نصب بسته

bash
dotnet add package Doconut.NET6.Dicom

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

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

پکیج DICOM را با همان نسخهٔ Doconut.NET6 نگه دارید. شناسهٔ پکیج Doconut.NET6.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 در .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 → تنظیمات فرمت‌ها قرار دارد. یک مثال تولیدی از سوئیچ بر‑پایهٔ پسوند در برنامهٔ مرجع:

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 است، یا &meta مقدار 501 برمی‌گرداندمحدودیت مورد انتظار .NET 6؛ رندر تحت تأثیر نیست

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