DICOM‑plugin

Visa medicinska bilder med DicomPlugin

DICOM‑pluginet lägger till visning av medicinska bilder i Doconut: flerbilds‑DICOM‑filer renderas som en animerad översikt, enskilda ramar eller båda. DICOM är ett plugin‑endast format — utan detta plugin (och dess licensfunktion) kan .dcm‑filer inte öppnas alls.

På .NET Framework 4.7.2 renderas DICOM‑filer fullständigt — sidor, ramar och animation — men teknisk metadata (DICOM‑taggarna) är inte tillgänglig. Viewer.GetDicomMetadataAsync returnerar alltid null, och widgetens metadataförfrågan svarar med 501 Not Implemented. Använd Doconut.NET8 om din applikation behöver taggarna.

Installera paketet

powershell
Install-Package Doconut.NETFramework.Dicom

Behåll DICOM‑paketet på samma version som Doconut.NETFramework.

Registrera pluginet

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Pluginet (Name: "Doconut DICOM Viewer") registrerar visare för .dcm‑ och .ima‑tillägg, styrda av Dicom‑kapaciteten. Om licensen inte beviljar den, kastar DoconutHost.Initialize från Application_Start och webbplatsen svarar på varje förfrågan med en tom 500 (orsaken finns i Windows‑händelseloggen). Eftersom ingen inbyggd visare hanterar dessa format, misslyckas öppning av ett sådant omedelbart om kapaciteten senare blir otillgänglig:

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

Öppna en DICOM‑fil

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

Visningslägen

Flerbilds‑DICOM‑filer kan presenteras på tre sätt (DicomDisplayMode):

LägeGenererade sidorAnvändning
AnimationOnlySida 1 = animerad GIF som loopar alla ramarSnabb filmisk granskning
FramesOnlySidor 1..N = en statisk PNG per ramRam‑för‑ram diagnostisk navigering
AnimationAndFrames (standard)Sida 1 = animerad GIF, sidor 2..N = statiska ramarÖversikt och detalj i ett dokument

Animationstiden styrs av AnimationFrameDelayMs (standard 100 ms = 10 FPS; GIF‑tid använder 10 ms‑enheter) och LoopCount (0 = loopa för alltid).

Visaren upptäcker att sida 1 är animerad genom att skicka en HEAD‑förfrågan för den. DocImage.axd‑hanteraren måste därför acceptera HEAD i Web.config (verb="GET,HEAD,POST", se Installation); utan den svarar IIS med 404 innan Doconut körs och animationsdetektering fungerar aldrig.

Upplösning

DicomConfig renderas med 100 DPI per axel som standard. Om du inte sätter HorizontalResolution/VerticalResolution explicit, följer de BaseConfig.ImageResolution när den är satt, och faller först tillbaka till 100.

csharp
// Enhetlig ökning via basegenskapen…
new DicomConfig { ImageResolution = 150 };

// …eller per-axelkontroll
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

DICOM‑metadata

csharp
var metadata = await viewer.GetDicomMetadataAsync(token);
// På .NET Framework är detta alltid null: DICOM-metadata-läsaren är inte tillgänglig för detta
// target. Sidor, ramar och animation renderas normalt.

Metoden finns i detta paket så att kod som delas med .NET 8‑paketet kan kompileras, men att läsa DICOM‑taggar kräver en komponent som saknar .NET Framework‑byggnad. Planera ditt användargränssnitt utan dem — till exempel, dölj en metadata‑panel när resultatet är null.

Fullständig konfigurationsreferens

Den kompletta DicomConfig‑egenskapstabellen finns i Format Configs. I ett per‑tilläggsval ser DICOM‑fallet ut så här:

csharp
case ".DCM": case ".IMA":
    return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };

Vattenstämpel och minnesbeteende

Det normala beslutet om sidvattensstämpel gäller även för DICOM‑utdata. För animerad utdata stämplas varje GIF‑ram, så märket förblir synligt under hela uppspelningen. En anpassad DocOptions.Watermark används endast när licensen tillåter anpassade vattenstämplar; den kan inte ersätta en utvärderingsvattensstämpel.

Flerbildsstudier kan producera både en animation och en statisk sida per ram. AnimationAndFrames ger den rikaste navigeringen men också den högsta renderings‑ och minneskostnaden — och på en enskild server tillhör det minnet IIS‑arbetsprocessen. För stora studier:

  • använd FramesOnly när ram‑inspektion är viktigare än uppspelning;
  • undvik att öka båda upplösningsaxlarna utan att mäta minnet;
  • stäng sessionen explicit när studien inte längre är öppen;
  • behåll CachePages på endast när återkommande åtkomst är värd de behållna bilderna.

Felsökning

SymptomKontroll
.dcm rapporteras som ej stödjsDicomPlugin‑registrering och paketdistribution
Varje förfrågan svarar med en tom 500 efter att pluginet lagts tillLicensen beviljar Dicom — Windows‑händelseloggen, källa ASP.NET
Endast en sida visasKällan kan vara enstaka ram, eller DisplayMode är AnimationOnly
Sida 1 animeras inteHanteraren i Web.config accepterar HEAD
Animationen är för snabb eller för långsamAnimationFrameDelayMs; GIF‑tid använder 10 ms‑enheter
Minnet växer på stora flerbilds‑filerVisningsläge, upplösning, sidcache och explicit sessionsstängning
Metadata är alltid nullFörväntat i detta paket — se noteringen högst upp

Var den här sidan hjälpsam?