תוסף DICOM
הצגת תמונות רפואיות עם DicomPlugin
תוסף DICOM מוסיף צפייה בתמונות רפואיות ל‑Doconut: קבצי DICOM מרובי‑פריימים מוצגים כתצוגה מונפשת, פריימים בודדים, או שניהם. DICOM הוא פורמט של תוסף בלבד — ללא תוסף זה (וללא יכולת הרישיון שלו), קבצי .dcm אינם ניתנים לפתיחה כלל.
ב‑.NET Framework 4.7.2, קבצי DICOM מוצגים במלואם — דפים, פריימים, ואנימציה — אך מטא‑נתונים טכניים (תגיות DICOM) אינם זמינים.
Viewer.GetDicomMetadataAsyncתמיד מחזירnull, ובקשת המטא‑נתונים של הווידג'ט מחזירה501 Not Implemented. השתמש ב‑Doconut.NET8אם היישום שלך זקוק לתגיות.
התקנת החבילה
Install-Package Doconut.NETFramework.Dicomשמור על גרסת חבילת DICOM זהה לגרסה של Doconut.NETFramework.
רישום התוסף
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});התוסף (Name: "Doconut DICOM Viewer") רושם מציגים עבור ההרחבות .dcm ו‑.ima, כאשר הגישה תלויה ביכולת Dicom. אם הרישיון אינו מעניק זאת, DoconutHost.Initialize זורק משגיאה ב‑Application_Start והאתר משיב לכל בקשה עם 500 ריק (הסיבה נמצאת ביומן האירועים של Windows). מכיוון שאין מציג מובנה שמטפל בפורמטים אלה, פתיחה של קובץ כזה נכשלת לחלוטין אם היכולת מאוחר יותר אינה זמינה:
LicenseException: This document type requires the 'Dicom' plugin license.פתיחת קובץ DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});מצבי תצוגה
קבצי DICOM מרובי‑פריימים יכולים להיות מוצגים בשלוש דרכים (DicomDisplayMode):
| מצב | דפים שנוצרים | שימוש עבור |
|---|---|---|
AnimationOnly | דף 1 = GIF מונפש שמחזור את כל הפריימים | סקירה קולנועית מהירה |
FramesOnly | דפים 1..N = PNG סטטי אחד לכל פריים | ניווט אבחוני פריים‑בפריים |
AnimationAndFrames (default) | דף 1 = GIF מונפש, דפים 2..N = פריימים סטטיים | סקירה כללית ופירוט במסמך אחד |
זמן האנימציה נשלט על‑ידי AnimationFrameDelayMs (ברירת מחדל 100 מ״ש = 10 FPS; זמן ה‑GIF משתמש ביחידות של 10 מ״ש) ו‑LoopCount (0 = לולאה אינסופית).
המציג מגלה שהדף 1 מונפש על‑ידי שליחת בקשת HEAD עבורו. ולכן המטפל DocImage.axd חייב לקבל HEAD ב‑Web.config (verb="GET,HEAD,POST", ראה התקנה); ללא זאת, IIS מחזיר 404 לפני שה‑Doconut פועל וזיהוי האנימציה לעולם לא פועל.
רזולוציה
DicomConfig מציג ברזולוציה של 100 DPI לכל ציר כברירת מחדל. אם אינך מגדיר במפורש HorizontalResolution/VerticalResolution, הם נוטים ל‑BaseConfig.ImageResolution כאשר הוא מוגדר, ורק אז חוזרים ל‑100.
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };מטא‑נתוני DICOM
var metadata = await viewer.GetDicomMetadataAsync(token);
// On .NET Framework this is always null: the DICOM metadata reader is not available for this
// target. Pages, frames and animation render normally.המתודה קיימת בחבילה זו כדי שהקוד המשותף עם חבילת .NET 8 יקומפל, אך קריאת תגיות DICOM דורשת רכיב שאין לו בנייה ל‑.NET Framework. תכנן את ממשק המשתמש שלך ללאן — לדוגמה, הסתר פאנל מטא‑נתונים כאשר התוצאה היא null.
הפניה המלאה לתצורת
טבלת המאפיינים המלאה של DicomConfig נמצאת ב‑תצורות פורמט. בבחירה לפי הרחבה, מקרה ה‑DICOM נראה כך:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };סימן מים והתנהגות זיכרון
החלטת סימן המים הרגילה לדף חלה גם על פלט DICOM. עבור פלט מונפש, כל פריים של GIF מסומן, ולכן הסימן נשאר גלוי לאורך כל ההפעלה. DocOptions.Watermark מותאם אישית משמש רק כאשר הרישיון מאפשר סימני מים מותאמים; הוא אינו יכול להחליף סימן מים של גרסת הערכה.
מחקרים מרובי‑פריימים יכולים לייצר גם אנימציה וגם דף סטטי לכל פריים. AnimationAndFrames מספק את הניווט העשיר ביותר אך גם את עלות הרינדור והזיכרון הגבוהה ביותר — ובשרת יחיד הזיכרון שייך לתהליך העובד של IIS. עבור מחקרים גדולים:
- השתמש ב‑
FramesOnlyכאשר בדיקת פריימים חשובה יותר מהפעלה; - הימנע מהעלאת שני צירי הרזולוציה ללא מדידת זיכרון;
- סגור את הסשן במפורש כאשר המחקר אינו פתוח יותר;
- השאר את
CachePagesפעיל רק כאשר גישה חוזרת מצדיק את שמירת התמונות.
פתרון בעיות
| תסמין | בדיקה |
|---|---|
.dcm מדווח כלא נתמך | רישום DicomPlugin והפצת החבילה |
כל בקשה משיבה 500 ריק לאחר הוספת התוסף | הרישיון מעניק Dicom — יומן אירועי Windows, מקור ASP.NET |
| מתקבל רק דף אחד | המקור עשוי להיות פריים יחיד, או ש‑DisplayMode הוא AnimationOnly |
| דף 1 אינו מונפש | המתאם ב‑Web.config מקבל HEAD |
| האנימציה מהירה מדי או איטית | AnimationFrameDelayMs; זמן ה‑GIF משתמש ביחידות של 10 מ״ש |
| הזיכרון גדל בקבצים מרובי‑פריימים גדולים | מצב תצוגה, רזולוציה, מטמון דפים, וסגירת סשן מפורשת |
מטא‑נתונים תמיד null | צפוי בחבילה זו — ראה את ההערה בראש |
האם דף זה היה מועיל?