Plugin DICOM
Visualizza immagini mediche con DicomPlugin
Il plugin DICOM aggiunge la visualizzazione di immagini mediche a Doconut: i file DICOM multi-frame vengono renderizzati come una panoramica animata, fotogrammi individuali o entrambi. DICOM è un formato solo plugin — senza questo plugin (e la relativa capacità di licenza), i file .dcm non possono essere aperti affatto.
Su .NET Framework 4.7.2, i file DICOM vengono renderizzati completamente — pagine, fotogrammi e animazione — ma i metadati tecnici (i tag DICOM) non sono disponibili.
Viewer.GetDicomMetadataAsyncrestituisce semprenull, e la richiesta di metadati del widget risponde501 Not Implemented. UsaDoconut.NET8se la tua applicazione necessita dei tag.
Installa il pacchetto
Install-Package Doconut.NETFramework.DicomMantieni il pacchetto DICOM alla stessa versione di Doconut.NETFramework.
Registra il plugin
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Il plugin (Name: "Doconut DICOM Viewer") registra visualizzatori per le estensioni .dcm e .ima, controllate dalla capacità Dicom. Se la licenza non la concede, DoconutHost.Initialize genera un'eccezione da Application_Start e il sito risponde a ogni richiesta con un 500 vuoto (il motivo è nel registro eventi di Windows). Poiché nessun visualizzatore integrato gestisce questi formati, l'apertura di uno fallisce direttamente se la capacità diventa successivamente non disponibile:
LicenseException: This document type requires the 'Dicom' plugin license.Apertura di un file DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});Modalità di visualizzazione
I file DICOM multi-frame possono essere presentati in tre modi (DicomDisplayMode):
| Modalità | Pagine generate | Uso |
|---|---|---|
AnimationOnly | Pagina 1 = GIF animato che ripete tutti i fotogrammi | Revisione cinematografica rapida |
FramesOnly | Pagine 1..N = un PNG statico per fotogramma | Navigazione diagnostica fotogramma per fotogramma |
AnimationAndFrames (default) | Pagina 1 = GIF animato, pagine 2..N = fotogrammi statici | Panoramica e dettaglio in un unico documento |
Il timing dell'animazione è controllato da AnimationFrameDelayMs (predefinito 100 ms = 10 FPS; il timing GIF utilizza unità di 10 ms) e LoopCount (0 = loop infinito).
Il visualizzatore scopre che la pagina 1 è animata inviando una richiesta HEAD per essa. Il gestore DocImage.axd deve quindi accettare HEAD in Web.config (verb="GET,HEAD,POST", vedi Installazione); senza di ciò, IIS risponde 404 prima che Doconut venga eseguito e il rilevamento dell'animazione non funziona mai.
Risoluzione
DicomConfig renderizza a 100 DPI per asse per impostazione predefinita. Se non imposti esplicitamente HorizontalResolution/VerticalResolution, esse seguono BaseConfig.ImageResolution quando è impostato, e solo allora tornano a 100.
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };Metadati 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.Il metodo esiste in questo pacchetto affinché il codice condiviso con il pacchetto .NET 8 compili, ma la lettura dei tag DICOM richiede un componente che non ha una build per .NET Framework. Progetta la tua interfaccia utente senza di essi — ad esempio, nascondi un pannello dei metadati quando il risultato è null.
Riferimento completo della configurazione
La tabella completa delle proprietà DicomConfig è in Configurazioni Formato. In una selezione per estensione, il caso DICOM appare così:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Filigrana e comportamento della memoria
La decisione normale sulla filigrana della pagina si applica anche all'output DICOM. Per l'output animato, ogni fotogramma GIF è contrassegnato, quindi la filigrana rimane visibile durante la riproduzione. Un DocOptions.Watermark personalizzato è usato solo quando la licenza consente filigrane personalizzate; non può sostituire una filigrana di valutazione.
Gli studi multi-frame possono produrre sia un'animazione sia una pagina statica per fotogramma. AnimationAndFrames offre la navigazione più ricca ma anche il più alto costo di rendering e memoria — e su un singolo server quella memoria appartiene al processo worker di IIS. Per studi di grandi dimensioni:
- usa
FramesOnlyquando l'ispezione dei fotogrammi è più importante della riproduzione; - evita di aumentare entrambi gli assi di risoluzione senza misurare la memoria;
- chiudi esplicitamente la sessione quando lo studio non è più aperto;
- mantieni
CachePagesattivo solo quando l'accesso ripetuto vale le immagini conservate.
Risoluzione dei problemi
| Sintomo | Verifica |
|---|---|
.dcm segnalato come non supportato | Registrazione di DicomPlugin e distribuzione del pacchetto |
Ogni richiesta risponde con un 500 vuoto dopo aver aggiunto il plugin | La licenza concede Dicom — registro eventi Windows, sorgente ASP.NET |
| Viene visualizzata una sola pagina | La sorgente potrebbe essere a fotogramma singolo, o DisplayMode è AnimationOnly |
| La pagina 1 non è animata | Il gestore in Web.config accetta HEAD |
| L'animazione è troppo veloce o lenta | AnimationFrameDelayMs; il timing GIF utilizza unità di 10 ms |
| La memoria aumenta con file multi-frame di grandi dimensioni | Modalità di visualizzazione, risoluzione, cache delle pagine e chiusura esplicita della sessione |
I metadati sono sempre null | Previsto in questo pacchetto — vedi la nota in alto |
Questa pagina è stata utile?