Plugin DICOM
Visualize imagens médicas com DicomPlugin
O plugin DICOM adiciona visualização de imagens médicas ao Doconut: arquivos DICOM multiquadro são renderizados como uma visão geral animada, quadros individuais ou ambos. DICOM é um formato somente de plugin — sem este plugin (e sua capacidade de licença), arquivos .dcm não podem ser abertos de forma alguma.
Instalar o pacote
dotnet add package Doconut.NET6.DicomO comando sem versão instala a versão estável mais recente. Para fixar o plugin na versão atual 26.7.0, passe a versão separadamente:
dotnet add package Doconut.NET6.Dicom --version 26.7.0Mantenha o pacote DICOM na mesma versão que o Doconut.NET6. O ID do pacote é Doconut.NET6.Dicom; .26.7.0 aparece apenas no nome do arquivo .nupkg baixado.
Registrar o plugin
builder.Services.AddDoconut(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. Uma permissão ausente ou insuficiente normalmente falha durante AddDoconut(). Como nenhum visualizador interno lida com esses formatos, o gate de tempo de execução também falha de forma crítica 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 multiquadro podem ser apresentados de três maneiras (DicomDisplayMode):
| Modo | Páginas produzidas | Uso |
|---|---|---|
AnimationOnly | Página 1 = GIF animado repetindo 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 + detalhe em um único documento |
O tempo da animação é controlado por AnimationFrameDelayMs (padrão 100 ms = 10 FPS; granularidade do GIF em unidades de 10 ms) e LoopCount (0 = loop infinito).
Resolução
DicomConfig renderiza a 100 DPI por eixo por padrão. As propriedades de resolução têm uma cadeia de fallback importante: se você não definir HorizontalResolution/VerticalResolution explicitamente, elas seguem BaseConfig.ImageResolution quando configurado, 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 };Disponibilidade de metadados DICOM no .NET 6
A renderização de páginas DICOM, quadros individuais, animação, transformações e marca d'água são suportados. Metadados de tags técnicas não estão disponíveis no pacote .NET 6 porque o leitor de metadados não possui uma compilação para .NET 6.
Viewer.GetDicomMetadataAsync(token) portanto retorna null para uma sessão DICOM e registra um aviso único. A requisição de middleware correspondente ?token=…&meta devolve HTTP 501 Not Implemented com o código de erro estável dicom_metadata_unsupported. Use o pacote .NET 8 quando metadados técnicos DICOM forem um requisito.
Referência completa de configuração
A tabela completa de propriedades DicomConfig está em Referência da API → Configurações de Formato. Um exemplo de produção do switch por extensão no app de referência:
".DCM" or ".IMA" => 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 é carimbado para que a marca permaneça visível durante a reprodução. Um DocOptions.Watermark personalizado é usado somente quando o caminho de licença permite marcas d'água personalizadas; ele não pode substituir uma marca d'água de avaliação.
Estudos multiquadro podem gerar tanto uma animação quanto uma página estática por quadro. AnimationAndFrames oferece a navegação mais rica, mas também tem o maior custo de renderização e cache. Para estudos grandes:
- use
FramesOnlyquando a inspeção de quadros for mais importante que a reprodução cinematográfica; - evite aumentar ambos os eixos de resolução sem medir a memória;
- feche a sessão explicitamente quando o estudo não estiver mais aberto;
- mantenha
CachePageshabilitado somente quando os benefícios de acesso repetido superarem as imagens retidas.
Solução de problemas
| Sintoma | Verificação |
|---|---|
.dcm é relatado como não suportado | registro do DicomPlugin e implantação do pacote |
| Falha na inicialização após adicionar o plugin | A licença carregada concede Dicom |
| Aparece apenas uma página | A fonte pode ser de quadro único, ou DisplayMode é AnimationOnly |
| A animação está muito rápida ou lenta | AnimationFrameDelayMs; o tempo efetivo do GIF usa unidades de 10 ms |
| A memória cresce em arquivos multiquadro grandes | Modo de exibição, resolução, cache de páginas e fechamento explícito da sessão |
Metadados são null, ou &meta retorna 501 | Limitação esperada do .NET 6; a renderização não é afetada |
Esta página foi útil?