תוסף DICOM
צפייה בתמונות רפואיות עם DicomPlugin
תוסף DICOM מוסיף צפייה בתמונות רפואיות ל‑Doconut: קבצי DICOM מרובי‑פריימים מוצגים כתצוגה מונפשת, פריימים בודדים, או שניהם. DICOM הוא פורמט רק‑תוסף — ללא תוסף זה (וללא רישיון השימוש שלו), קבצי .dcm אינם ניתנים לפתיחה כלל.
התקנת החבילה
dotnet add package Doconut.NETStandard.Dicomהפקודה ללא גרסה מתקינה את הגרסה היציבה האחרונה. כדי לקבע את התוסף לגרסה 26.8.0 הנוכחית, העבירו את הגרסה בנפרד:
dotnet add package Doconut.NETStandard.Dicom --version 26.8.0יש לשמור על חבילת DICOM באותה גרסה כמו Doconut.NETStandard. מזהה החבילה הוא Doconut.NETStandard.Dicom; .26.8.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 | דף 1 = GIF מונפש שמחזור את כל הפריימים | סקירה קולנועית מהירה |
FramesOnly | דפים 1..N = PNG סטטי אחד לכל פריים | ניווט אבחוני פריים‑אחר‑פריים |
AnimationAndFrames (default) | דף 1 = GIF מונפש, דפים 2..N = פריימים סטטיים | סקירה + פרטים במסמך אחד |
הזמן של האנימציה נשלט על ידי AnimationFrameDelayMs (ברירת מחדל 100 מ״ש = 10 FPS; גרנולריות ה‑GIF היא יחידות של 10 מ״ש) ו‑LoopCount (0 = לולאה אינסופית).
רזולוציה
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 ב‑.NET Standard
הצגת דפי DICOM, פריימים בודדים, אנימציה, טרנספורמציות והוספת סימן מים נתמכים. מטא‑נתוני תגים טכניים אינם זמינים בחבילה של .NET Standard מכיוון שקורא המטא‑נתונים מגיע רק בבנייה של .NET 8.
Viewer.GetDicomMetadataAsync(token) ולכן מחזיר null עבור סשן DICOM ורושם אזהרה חד‑פעמית. בקשת ה‑middleware המתאימה ?token=…&meta מחזירה HTTP 501 Not Implemented עם קוד השגיאה הקבוע dicom_metadata_unsupported. השתמשו בחבילה של .NET 8 כאשר מטא‑נתוני DICOM טכניים הם דרישה.
הפנייה המלאה להגדרות
טבלת המאפיינים המלאה של DicomConfig נמצאת ב‑API Reference → Format Configs. דוגמה ייצורית מהמחליף לפי הרחבה באפליקציית ההפניה:
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },סימן מים והתנהגות זיכרון
החלטת סימן המים הרגילה לדף חלה גם על פלט DICOM. עבור פלט מונפש, כל פריים של GIF מסומן כך שהסימן נשאר גלוי לאורך כל ההפעלה. DocOptions.Watermark מותאם אישית משמש רק כאשר נתיב הרישיון מאפשר סימני מים מותאמים; הוא אינו יכול להחליף סימן מים של הערכה.
מחקרים מרובי‑פריימים יכולים לייצר גם אנימציה וגם דף סטטי לכל פריים. AnimationAndFrames מספק את הניווט העשיר ביותר אך גם בעל העלות הגבוהה ביותר של רינדור וזיכרון מטמון. עבור מחקרים גדולים:
- השתמשו ב‑
FramesOnlyכאשר בדיקת הפריימים חשובה יותר מהפעלה קולנועית; - הימנעו מהעלאת שני צירי הרזולוציה ללא מדידת הזיכרון;
- סגרו את הסשן במפורש כאשר המחקר אינו פתוח יותר;
- השאירו את
CachePagesפעיל רק כאשר היתרונות של גישה חוזרת עולים על העלות של שמירת התמונות.
פתרון בעיות
| תסמין | בדיקה |
|---|---|
.dcm מדווח כלא נתמך | רישום DicomPlugin והפצת החבילה |
| הפעלה נכשלת לאחר הוספת התוסף | הרישיון הטעון מעניק Dicom |
| מוצג רק דף אחד | המקור עשוי להיות פריים יחיד, או ש‑DisplayMode הוא AnimationOnly |
| האנימציה מהירה מדי או איטית מדי | AnimationFrameDelayMs; תזמון GIF אפקטיבי משתמש ביחידות של 10 מ״ש |
| זיכרון גדל בקבצים מרובי‑פריימים גדולים | מצב תצוגה, רזולוציה, מטמון דפים, וסגירת סשן מפורשת |
מטא‑נתונים הוא null, או &meta מחזיר 501 | הגבלה צפויה של חבילה זו; הרינדור אינו מושפע |
האם דף זה היה מועיל?