Πρόσθετο DICOM
Προβολή ιατρικών εικόνων με DicomPlugin
Το πρόσθετο DICOM προσθέτει προβολή ιατρικών εικόνων στο Doconut: τα αρχεία DICOM πολλαπλών καρέ αποδίδονται ως μια κινούμενη επισκόπηση, μεμονωμένα καρέ, ή και τα δύο. Το DICOM είναι μορφή μόνο-πρόσθετου — χωρίς αυτό το πρόσθετο (και τη δυνατότητα άδειας), τα αρχεία .dcm δεν μπορούν να ανοίξουν καθόλου.
Στο .NET Framework 4.7.2, τα αρχεία DICOM αποδίδονται πλήρως — σελίδες, καρέ και animation — αλλά τα τεχνικά μεταδεδομένα (οι ετικέτες DICOM) δεν είναι διαθέσιμα.
Viewer.GetDicomMetadataAsyncπάντα επιστρέφειnull, και το αίτημα μεταδεδομένων του widget απαντά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 = animated GIF που επαναλαμβάνει όλα τα καρέ | Γρήγορη κινηματογραφική επισκόπηση |
FramesOnly | Σελίδες 1..N = ένα στατικό PNG ανά καρέ | Διάγνωση πλοήγησης καρέ-καρέ |
AnimationAndFrames (default) | Σελίδα 1 = animated GIF, σελίδες 2..N = στατικά καρέ | Επισκόπηση και λεπτομέρεια σε ένα έγγραφο |
Ο χρόνος animation ελέγχεται από το AnimationFrameDelayMs (προεπιλογή 100 ms = 10 FPS· ο χρόνος GIF χρησιμοποιεί μονάδες 10 ms) και το LoopCount (0 = αέναος βρόχος).
Ο προβολέας διαπιστώνει ότι η σελίδα 1 είναι animated στέλνοντας ένα αίτημα HEAD γι' αυτήν. Ο χειριστής DocImage.axd πρέπει επομένως να αποδέχεται HEAD στο Web.config (verb="GET,HEAD,POST", δείτε την Εγκατάσταση); χωρίς αυτό, το IIS απαντά 404 πριν τρέξει το Doconut και η ανίχνευση animation δεν λειτουργεί ποτέ.
Ανάλυση
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. Σχεδιάστε το UI σας χωρίς αυτές — για παράδειγμα, κρύψτε ένα πάνελ μεταδεδομένων όταν το αποτέλεσμα είναι null.
Πλήρης αναφορά διαμόρφωσης
Ο πλήρης πίνακας ιδιοτήτων DicomConfig βρίσκεται στα Διαμορφώσεις Μορφής. Σε επιλογή ανά επέκταση, η περίπτωση DICOM φαίνεται ως εξής:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Υδατογράφημα και συμπεριφορά μνήμης
Η κανονική απόφαση για υδατογράφημα σελίδας ισχύει επίσης για την έξοδο DICOM. Για animated έξοδο, κάθε καρέ GIF σφραγίζεται, ώστε το σήμα να παραμένει ορατό καθ' όλη τη διάρκεια της αναπαραγωγής. Ένα προσαρμοσμένο DocOptions.Watermark χρησιμοποιείται μόνο όταν η άδεια επιτρέπει προσαρμοσμένα υδατογραφήματα· δεν μπορεί να αντικαταστήσει ένα υδατογράφημα αξιολόγησης.
Οι μελέτες πολλαπλών καρέ μπορούν να παράγουν τόσο animation όσο και μία στατική σελίδα ανά καρέ. Το AnimationAndFrames παρέχει την πιο πλούσια πλοήγηση αλλά και το υψηλότερο κόστος απόδοσης και μνήμης — και σε έναν ενιαίο διακομιστή αυτή η μνήμη ανήκει στη διαδικασία εργαζόμενου του IIS. Για μεγάλες μελέτες:
- χρησιμοποιήστε
FramesOnlyόταν η επιθεώρηση καρέ είναι πιο σημαντική από την αναπαραγωγή· - αποφύγετε την αύξηση και των δύο αξόνων ανάλυσης χωρίς μέτρηση μνήμης·
- κλείστε τη συνεδρία ρητά όταν η μελέτη δεν είναι πλέον ανοιχτή·
- διατηρήστε το
CachePagesενεργό μόνο όταν η επαναλαμβανόμενη πρόσβαση αξίζει τις διατηρημένες εικόνες.
Επίλυση προβλημάτων
| Σύμπτωμα | Έλεγχος |
|---|---|
.dcm αναφέρεται ως μη υποστηριζόμενο | Καταχώριση DicomPlugin και ανάπτυξη πακέτου |
Κάθε αίτηση απαντά κενό 500 μετά την προσθήκη του πρόσθετου | Η άδεια παρέχει Dicom — αρχείο καταγραφής Windows, πηγή ASP.NET |
| Εμφανίζεται μόνο μία σελίδα | Η πηγή μπορεί να είναι μονοκαρέ, ή το DisplayMode είναι AnimationOnly |
| Η σελίδα 1 δεν είναι animated | Ο χειριστής στο Web.config αποδέχεται HEAD |
| Το animation είναι πολύ γρήγορο ή αργό | AnimationFrameDelayMs; ο χρόνος GIF χρησιμοποιεί μονάδες 10 ms |
| Η μνήμη αυξάνεται σε μεγάλα αρχεία πολλαπλών καρέ | Τρόπος εμφάνισης, ανάλυση, cache σελίδων, και ρητό κλείσιμο συνεδρίας |
Τα μεταδεδομένα είναι πάντα null | Αναμένεται σε αυτό το πακέτο — δείτε τη σημείωση στην κορυφή |
Ήταν αυτή η σελίδα χρήσιμη;