Plugin DICOM
Visualize imagens médicas com DicomPlugin
O plugin DICOM adiciona visualização de imagens médicas ao Doconut: arquivos DICOM multi‑frame são renderizados como uma visão animada, quadros individuais ou ambos. DICOM é um formato somente‑plugin — sem este plugin (e sua capacidade de licença), arquivos .dcm não podem ser abertos de forma alguma.
No .NET Framework 4.7.2, arquivos DICOM são renderizados completamente — páginas, quadros e animação — mas os metadados técnicos (as tags DICOM) não estão disponíveis.
Viewer.GetDicomMetadataAsyncsempre retornanull, e a solicitação de metadados do widget responde501 Not Implemented. UseDoconut.NET8se sua aplicação precisar das tags.
Instalar o pacote
Install-Package Doconut.NETFramework.DicomMantenha o pacote DICOM na mesma versão que Doconut.NETFramework.
Registrar o plugin
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});O plugin (Name: "Doconut DICOM Viewer") registra visualizadores para as extensões .dcm e .ima, controlados pela capacidade Dicom. Se a licença não a conceder, DoconutHost.Initialize lança uma exceção em Application_Start e o site responde a todas as requisições com um 500 vazio (o motivo está no log de eventos do Windows). Como nenhum visualizador interno lida com esses formatos, abrir um deles falha imediatamente se a capacidade ficar indisponível posteriormente:
LicenseException: This document type requires the 'Dicom' plugin license.Abrindo um arquivo DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});Modos de exibição
Arquivos DICOM multi‑frame podem ser apresentados de três maneiras (DicomDisplayMode):
| Modo | Páginas produzidas | Uso |
|---|---|---|
AnimationOnly | Página 1 = GIF animado percorrendo todos os quadros | Revisão cinematográfica rápida |
FramesOnly | Páginas 1..N = um PNG estático por quadro | Navegação diagnóstico quadro a quadro |
AnimationAndFrames (padrão) | Página 1 = GIF animado, páginas 2..N = quadros estáticos | Visão geral e detalhe em um único documento |
O tempo da animação é controlado por AnimationFrameDelayMs (padrão 100 ms = 10 FPS; o timing do GIF usa unidades de 10 ms) e LoopCount (0 = loop infinito).
O visualizador descobre que a página 1 é animada enviando uma requisição HEAD para ela. O manipulador DocImage.axd deve, portanto, aceitar HEAD em Web.config (verb="GET,HEAD,POST", veja Installation); sem isso, o IIS responde 404 antes que o Doconut seja executado e a detecção de animação nunca funciona.
Resolução
DicomConfig renderiza a 100 DPI por eixo por padrão. Se você não definir HorizontalResolution/VerticalResolution explicitamente, eles seguem BaseConfig.ImageResolution quando este está definido, e só então retornam a 100.
// Bump uniforme via a propriedade base…
new DicomConfig { ImageResolution = 150 };
// …ou controle por eixo
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };Metadados DICOM
var metadata = await viewer.GetDicomMetadataAsync(token);
// No .NET Framework isso é sempre null: o leitor de metadados DICOM não está disponível para este
// alvo. Páginas, quadros e animação são renderizados normalmente.O método existe neste pacote para que o código compartilhado com o pacote .NET 8 compile, mas a leitura das tags DICOM requer um componente que não possui build para .NET Framework. Planeje sua interface de usuário sem elas — por exemplo, oculte um painel de metadados quando o resultado for null.
Referência completa de configuração
A tabela completa de propriedades DicomConfig está em Format Configs. Em uma seleção por extensão, o caso DICOM se parece com isto:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Marca d'água e comportamento de memória
A decisão normal de marca d'água de página também se aplica à saída DICOM. Para saída animada, cada quadro GIF recebe a marca, de modo que a marca permanece visível durante a reprodução. Um DocOptions.Watermark personalizado é usado apenas quando a licença permite marcas d'água personalizadas; ele não pode substituir uma marca d'água de avaliação.
Estudos multi‑frame podem gerar tanto uma animação quanto uma página estática por quadro. AnimationAndFrames oferece a navegação mais rica, mas também o maior custo de renderização e memória — e, em um único servidor, essa memória pertence ao processo worker do IIS. Para estudos grandes:
- use
FramesOnlyquando a inspeção de quadros for mais importante que a reprodução; - evite aumentar ambos os eixos de resolução sem medir o consumo de memória;
- feche a sessão explicitamente quando o estudo não estiver mais aberto;
- mantenha
CachePagesativado apenas quando o acesso repetido justificar as imagens retidas.
Solução de problemas
| Sintoma | Verificação |
|---|---|
.dcm é relatado como não suportado | Registro do DicomPlugin e implantação do pacote |
Cada requisição responde um 500 vazio após adicionar o plugin | A licença concede Dicom — log de eventos do Windows, origem ASP.NET |
| Apenas uma página aparece | A fonte pode ser de quadro único, ou DisplayMode está como AnimationOnly |
| Página 1 não anima | O manipulador em Web.config aceita HEAD |
| Animação muito rápida ou lenta | AnimationFrameDelayMs; o timing do GIF usa unidades de 10 ms |
| Memória cresce em arquivos multi‑frame grandes | Modo de exibição, resolução, cache de páginas e fechamento explícito da sessão |
Metadados são sempre null | Esperado neste pacote — veja a nota no início |
Esta página foi útil?