افزونه DICOM

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

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

نصب بسته

bash
dotnet add package Doconut.NETStandard.Dicom

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

bash
dotnet add package Doconut.NETStandard.Dicom --version 26.8.0

دستهٔ DICOM را با همان نسخهٔ Doconut.NETStandard نگه دارید. شناسهٔ بسته Doconut.NETStandard.Dicom است؛ عدد .26.8.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 Standard

رندر صفحات DICOM، قاب‌های جداگانه، انیمیشن، تبدیل‌ها و واترمارک‌گذاری پشتیبانی می‌شوند. متادیتای برچسب‌های فنی در بستهٔ .NET Standard موجود نیست زیرا خوانندهٔ متادیتا فقط یک نسخهٔ .NET 8 را ارائه می‌دهد.

به همین دلیل Viewer.GetDicomMetadataAsync(token) برای یک جلسه DICOM مقدار null برمی‌گرداند و یک هشدار یک‌بار ثبت می‌کند. درخواست میدل‌ور ?token=…&meta مربوطه پاسخ HTTP 501 Not Implemented با کد خطای ثابت dicom_metadata_unsupported می‌دهد. وقتی متادیتای فنی DICOM یک نیاز است، از بستهٔ .NET 8 استفاده کنید.

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

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

csharp
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },

واترمارک و رفتار حافظه

تصمیم واترمارک صفحهٔ معمولی نیز برای خروجی DICOM اعمال می‌شود. برای خروجی انیمیشنی، هر قاب GIF به‌صورت مهر می‌شود تا علامت در طول پخش قابل مشاهده بماند. DocOptions.Watermark سفارشی فقط زمانی استفاده می‌شود که مسیر مجوز اجازهٔ واترمارک‌های سفارشی را بدهد؛ نمی‌تواند جایگزین واترمارک ارزیابی شود.

مطالعات چند‑قاب می‌توانند هم انیمیشن و هم یک صفحهٔ ثابت برای هر قاب تولید کنند. AnimationAndFrames غنی‌ترین ناوبری را فراهم می‌کند اما بالاترین هزینهٔ رندر و کش را دارد. برای مطالعات بزرگ:

  • از FramesOnly استفاده کنید وقتی بررسی قاب مهم‌تر از پخش سینمایی است؛
  • از افزایش هر دو محور وضوح بدون اندازه‌گیری حافظه خودداری کنید؛
  • جلسه را به‌صورت صریح بسته کنید وقتی مطالعه دیگر باز نیست؛
  • CachePages را فقط زمانی فعال نگه دارید که مزایای دسترسی مکرر بیش از هزینهٔ نگهداری تصاویر باشد.

عیب‌یابی

علامتبررسی
.dcm به‌عنوان پشتیبانی‌نشده گزارش می‌شودثبت DicomPlugin و استقرار بسته
راه‌اندازی پس از افزودن افزونه شکست می‌خوردمجوز بارگذاری‌شده Dicom را اعطا می‌کند
فقط یک صفحه ظاهر می‌شودمنبع ممکن است تک‑قاب باشد، یا DisplayMode برابر AnimationOnly باشد
انیمیشن خیلی سریع یا خیلی آهسته استAnimationFrameDelayMs؛ زمان‌بندی مؤثر GIF از واحدهای ۱۰ میلی‌ثانیه استفاده می‌کند
حافظه در فایل‌های چند‑قاب بزرگ افزایش می‌یابدحالت نمایش، وضوح، کش صفحات، و بسته شدن صریح جلسه
متادیتا null است، یا &meta مقدار 501 برمی‌گرداندمحدودیت پیش‌بینی‌شده این بسته؛ رندرینگ تحت‌تأثیر نیست

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