Wtyczka DICOM

Wyświetlaj obrazy medyczne za pomocą DicomPlugin

Wtyczka DICOM dodaje możliwość przeglądania 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ć w ogóle otwarte.

Instalacja pakietu

bash
dotnet add package Doconut.NETStandard.Dicom

Polecenie bez wersji instaluję najnowsze stabilne wydanie. Aby przypiąć wtyczkę do bieżącego wydania 26.8.0, przekaż wersję osobno:

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

Utrzymuj pakiet DICOM w tej samej wersji co Doconut.NETStandard. Identyfikator pakietu to Doconut.NETStandard.Dicom; .26.8.0 pojawia się tylko w pobranej nazwie pliku .nupkg.

Rejestracja wtyczki

csharp
builder.Services.AddDoconut(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. Brak lub niewystarczające nie‑tymczasowe uprawnienie zazwyczaj powoduje błąd podczas AddDoconut(). Ponieważ żaden wbudowany podgląd nie obsługuje tych formatów, bramka w czasie wykonywania również kończy się niepowodzeniem, jeśli możliwość później stanie się niedostępna:

text
LicenseException: This document type requires the 'Dicom' plugin license.

Otwieranie pliku DICOM

csharp
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
    DisplayMode = DicomDisplayMode.AnimationAndFrames
});

Tryby wyświetlania

Pliki DICOM wieloklatkowe mogą być prezentowane na trzy sposoby (DicomDisplayMode):

TrybGenerowane stronyZastosowanie
AnimationOnlyStrona 1 = animowany GIF powtarzający wszystkie klatkiSzybki przegląd filmowy
FramesOnlyStrony 1..N = jeden statyczny PNG na klatkęDiagnostyczna nawigacja klatka po klatce
AnimationAndFrames (default)Strona 1 = animowany GIF, strony 2..N = statyczne klatkiPrzegląd + szczegóły w jednym dokumencie

Czas animacji jest kontrolowany przez AnimationFrameDelayMs (domyślnie 100 ms = 10 FPS; rozdzielczość GIF to jednostki 10 ms) oraz LoopCount (0 = pętla nieskończona).

Rozdzielczość

DicomConfig renderuje domyślnie z 100 DPI na oś. Właściwości rozdzielczości mają łańcuch wartości domyślnych, który warto znać: jeśli nie ustawisz explicite HorizontalResolution/VerticalResolution, podążają one za BaseConfig.ImageResolution, gdy jest skonfigurowane, i dopiero potem wracają do 100.

csharp
// Jednolita wypukłość poprzez właściwość bazową…
new DicomConfig { ImageResolution = 150 };

// …lub sterowanie per‑osiowe
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

Dostępność metadanych DICOM w .NET Standard

Renderowanie stron DICOM, pojedyncze klatki, animacja, przekształcenia i znakowanie wodne są obsługiwane. Metadane techniczne tagów nie są dostępne w pakiecie .NET Standard, ponieważ czytnik metadanych jest dostarczany wyłącznie w wersji .NET 8.

Viewer.GetDicomMetadataAsync(token) w związku z tym zwraca null dla sesji DICOM i zapisuje jednorazowe ostrzeżenie. Odpowiednie żądanie pośrednie ?token=…&meta zwraca HTTP 501 Not Implemented z trwałym kodem błędu dicom_metadata_unsupported. Użyj pakietu .NET 8, gdy techniczne metadane DICOM są wymagane.

Pełna referencja konfiguracji

Pełna tabela właściwości DicomConfig znajduje się w Referencji API → Konfiguracje formatów. Przykład produkcyjny z przełącznika aplikacji referencyjnej dla poszczególnych rozszerzeń:

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

Zachowanie znaku wodnego i pamięci

Standardowa decyzja o znakowaniu wodnym stron ma również zastosowanie do wyjścia DICOM. Dla wyjścia animowanego, każda klatka GIF jest znakowana, aby znak pozostał widoczny przez cały odtwarzanie. Niestandardowy DocOptions.Watermark jest używany tylko wtedy, gdy ścieżka licencyjna 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 ma też najwyższy koszt renderowania i pamięci podręcznej. Dla dużych badań:

  • użyj FramesOnly, gdy inspekcja klatek jest ważniejsza niż odtwarzanie filmowe;
  • unikaj zwiększania obu osi rozdzielczości bez pomiaru zużycia pamięci;
  • zamknij sesję explicite, gdy badanie nie jest już otwarte;
  • pozostaw CachePages włączone tylko wtedy, gdy korzyści z powtórnego dostępu przewyższają koszt przechowywanych obrazów.

Rozwiązywanie problemów

ObjawSprawdź
.dcm jest zgłaszany jako nieobsługiwanyDicomPlugin rejestracja i wdrożenie pakietu
Uruchomienie nie powodzi się po dodaniu wtyczkiZaładowana licencja przyznaje Dicom
Wyświetla się tylko jedna stronaŹródło może być jednoklatkowe, lub DisplayMode jest AnimationOnly
Animacja jest zbyt szybka lub zbyt wolnaAnimationFrameDelayMs; efektywne taktowanie GIF używa jednostek 10 ms
Pamięć rośnie przy dużych plikach wieloklatkowychTryb wyświetlania, rozdzielczość, pamięć podręczna stron oraz explicite zamknięcie sesji
Metadane są null, lub &meta zwraca 501Oczekiwane ograniczenie tego pakietu; renderowanie nie jest dotknięte

Czy ta strona była pomocna?