Wtyczka DICOM
Wyświetl obrazy medyczne przy użyciu DicomPlugin
Wtyczka DICOM dodaje przeglądanie obrazów medycznych do Doconut: pliki DICOM wieloklatkowe renderują się jako animowany przegląd, pojedyncze klatki lub oba jednocześnie. DICOM jest formatem wyłącznie wtyczkowym — bez tej wtyczki (i jej możliwości licencyjnej) pliki .dcm nie mogą być otwarte w ogóle.
W .NET Framework 4.7.2 pliki DICOM renderują się w pełni — strony, klatki i animacja — ale techniczne metadane (tagi DICOM) nie są dostępne.
Viewer.GetDicomMetadataAsynczawsze zwracanull, a żądanie metadanych widgetu odpowiada501 Not Implemented. UżyjDoconut.NET8, jeśli Twoja aplikacja potrzebuje tagów.
Zainstaluj pakiet
Install-Package Doconut.NETFramework.DicomUtrzymuj pakiet DICOM w tej samej wersji co Doconut.NETFramework.
Zarejestruj wtyczkę
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Wtyczka (Name: "Doconut DICOM Viewer") rejestruje przeglądarki dla rozszerzeń .dcm i .ima, zabezpieczone możliwością Dicom. Jeśli licencja jej nie przyznaje, DoconutHost.Initialize rzuca wyjątek z Application_Start, a witryna odpowiada na każde żądanie pustym kodem 500 (przyczyna znajduje się w dzienniku zdarzeń Windows). Ponieważ żaden wbudowany podgląd nie obsługuje tych formatów, otwarcie takiego pliku kończy się niepowodzeniem, jeśli później możliwość stanie się niedostępna:
LicenseException: This document type requires the 'Dicom' plugin license.Otwieranie pliku DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});Tryby wyświetlania
Pliki DICOM wieloklatkowe mogą być prezentowane na trzy sposoby (DicomDisplayMode):
| Tryb | Generowane strony | Zastosowanie |
|---|---|---|
AnimationOnly | Strona 1 = animowany GIF powtarzający wszystkie klatki | Szybki przegląd filmowy |
FramesOnly | Strony 1..N = jeden statyczny PNG na klatkę | Diagnostyczna nawigacja klatka po klatce |
AnimationAndFrames (domyślnie) | Strona 1 = animowany GIF, strony 2..N = statyczne klatki | Przegląd i szczegóły w jednym dokumencie |
Czas trwania animacji jest kontrolowany przez AnimationFrameDelayMs (domyślnie 100 ms = 10 FPS; czas GIF używa jednostek 10 ms) oraz LoopCount (0 = nieskończona pętla).
Podgląd ustala, że strona 1 jest animowana, wysyłając żądanie HEAD. Obsługa DocImage.axd musi więc akceptować HEAD w Web.config (verb="GET,HEAD,POST", zobacz Instalacja); bez tego IIS zwraca 404 zanim Doconut uruchomi się i wykrywanie animacji nigdy nie działa.
Rozdzielczość
DicomConfig renderuje z domyślną rozdzielczością 100 DPI na oś. Jeśli nie ustawisz jawnie HorizontalResolution/VerticalResolution, dziedziczą one wartość z BaseConfig.ImageResolution, gdy jest ustawiona, a dopiero potem wracają do 100.
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };Metadane 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.Metoda istnieje w tym pakiecie, aby kod współdzielony z pakietem .NET 8 się kompilował, ale odczyt tagów DICOM wymaga komponentu, który nie ma wersji dla .NET Framework. Zaplanuj interfejs użytkownika bez nich — na przykład ukryj panel metadanych, gdy wynik jest null.
Pełna referencja konfiguracji
Pełna tabela właściwości DicomConfig znajduje się w Konfiguracje formatów. W wyborze per‑rozszerzenie przypadek DICOM wygląda tak:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Znak wodny i zachowanie pamięci
Decyzja o znaku wodnym dla zwykłej strony ma również zastosowanie do wyjścia DICOM. Dla wyjścia animowanego każdy klatka GIF jest znakowana, więc znak pozostaje widoczny przez cały odtwarzanie. Niestandardowy DocOptions.Watermark jest używany tylko wtedy, gdy licencja zezwala na własne znaki wodne; nie może zastąpić znaku wodnego wersji ewaluacyjnej.
Badania wieloklatkowe mogą generować zarówno animację, jak i jedną statyczną stronę na klatkę. AnimationAndFrames zapewnia najbogatszą nawigację, ale także najwyższy koszt renderowania i pamięci — a na pojedynczym serwerze pamięć ta należy do procesu roboczego IIS. Dla dużych badań:
- użyj
FramesOnly, gdy inspekcja klatek jest ważniejsza niż odtwarzanie; - unikaj zwiększania obu osi rozdzielczości bez pomiaru pamięci;
- zamknij sesję wyraźnie, gdy badanie nie jest już otwarte;
- pozostaw
CachePageswłączone tylko wtedy, gdy powtarzany dostęp jest wart zachowanych obrazów.
Rozwiązywanie problemów
| Objaw | Sprawdź |
|---|---|
.dcm jest zgłaszany jako nieobsługiwany | Rejestracja DicomPlugin i wdrożenie pakietu |
Każde żądanie odpowiada pustym 500 po dodaniu wtyczki | Licencja przyznaje Dicom — dziennik zdarzeń Windows, źródło ASP.NET |
| Wyświetla się tylko jedna strona | Źródło może być jednowymiarowe, lub DisplayMode jest ustawiony na AnimationOnly |
| Strona 1 nie animuje się | Obsługa w Web.config akceptuje HEAD |
| Animacja jest zbyt szybka lub zbyt wolna | AnimationFrameDelayMs; czas GIF używa jednostek 10 ms |
| Pamięć rośnie przy dużych plikach wieloklatkowych | Tryb wyświetlania, rozdzielczość, pamięć podręczna stron i wyraźne zamknięcie sesji |
Metadane są zawsze null | Oczekiwane w tym pakiecie — zobacz notatkę na początku |
Czy ta strona była pomocna?