Плагин DICOM

Просмотр медицинских изображений с помощью DicomPlugin

Плагин DICOM добавляет просмотр медицинских изображений в Doconut: многокадровые файлы DICOM отображаются как анимированный обзор, отдельные кадры или оба варианта. DICOM — это формат только для плагина — без этого плагина (и его лицензии) файлы .dcm невозможно открыть.

Установить пакет

bash
dotnet add package Doconut.NETStandard.Dicom

Команда без указания версии устанавливает последнюю стабильную версию. Чтобы зафиксировать плагин на текущем выпуске 26.8.0, передайте версию отдельно:

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

Сохраняйте пакет DICOM той же версии, что и Doconut.NETStandard. Идентификатор пакета — Doconut.NETStandard.Dicom; .26.8.0 появляется только в имени загруженного файла .nupkg.

Зарегистрировать плагин

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Плагин (Name: "Doconut DICOM Viewer") регистрирует просмотрщики для расширений .dcm и .ima, ограниченные возможностью Dicom. Отсутствующее или недостаточное непостоянное право обычно приводит к ошибке во время AddDoconut(). Поскольку ни один встроенный просмотрщик не обрабатывает эти форматы, ограничение во время выполнения также приводит к жёсткой ошибке, если возможность позже станет недоступной:

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

Открытие файла DICOM

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

Режимы отображения

Многокадровые файлы DICOM могут быть представлены тремя способами (DicomDisplayMode):

РежимСоздаваемые страницыПрименение
AnimationOnlyСтраница 1 = анимированный GIF, повторяющий все кадрыБыстрый кинематографический обзор
FramesOnlyСтраницы 1..N = один статический PNG на кадрПошаговая диагностическая навигация
AnimationAndFrames (default)Страница 1 = анимированный GIF, страницы 2..N = статические кадрыОбзор + детали в одном документе

Время анимации контролируется AnimationFrameDelayMs (по умолчанию 100 мс = 10 FPS; гранулярность GIF — 10 мс) и LoopCount (0 = бесконечный цикл).

Разрешение

DicomConfig по умолчанию отображается с 100 DPI по каждой оси. Свойства разрешения имеют цепочку резервных значений, о которой стоит знать: если вы явно не задаёте HorizontalResolution/VerticalResolution, они следуют за BaseConfig.ImageResolution, когда он настроен, и только после этого возвращаются к 100.

csharp
// Однородный bump через базовое свойство…
new DicomConfig { ImageResolution = 150 };

// …или управление по каждой оси
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

Доступность метаданных DICOM в .NET Standard

Отображение страниц DICOM, отдельные кадры, анимация, трансформации и водяные знаки поддерживаются. Технические метаданные тегов недоступны в пакете .NET Standard, потому что считыватель метаданных поставляется только в сборке .NET 8.

Viewer.GetDicomMetadataAsync(token) поэтому возвращает null для DICOM‑сессии и записывает одноразовое предупреждение. Соответствующий запрос посредника ?token=…&meta возвращает HTTP 501 Not Implemented со стабильным кодом ошибки dicom_metadata_unsupported. Используйте пакет .NET 8, когда технические метаданные DICOM являются требованием.

Полная справка по конфигурации

Полная таблица свойств DicomConfig находится в API Reference → Format Configs. Пример из производственного приложения, показывающий переключатель по расширениям:

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

Водяной знак и поведение памяти

Обычное решение о водяном знаке страницы также применяется к выводу DICOM. Для анимированного вывода каждый кадр GIF помечается, чтобы знак оставался видимым на протяжении воспроизведения. Пользовательский DocOptions.Watermark используется только когда путь лицензии позволяет пользовательские водяные знаки; он не может заменить оценочный водяной знак.

Многокадровые исследования могут генерировать как анимацию, так и одну статическую страницу на кадр. AnimationAndFrames обеспечивает наиболее богатую навигацию, но также имеет наибольшие затраты на рендеринг и кэш. Для больших исследований:

  • используйте FramesOnly, когда проверка кадров важнее кинематографического воспроизведения;
  • избегайте увеличения обеих осей разрешения без измерения потребления памяти;
  • закрывайте сессию явно, когда исследование больше не открыто;
  • оставляйте CachePages включённым только когда выгода от повторного доступа превышает объём сохранённых изображений.

Устранение неполадок

СимптомПроверка
.dcm сообщается как неподдерживаемыйрегистрация DicomPlugin и развертывание пакета
Запуск не удаётся после добавления плагинаЗагруженная лицензия предоставляет Dicom
Отображается только одна страницаИсточник может быть однокадровым, или DisplayMode является AnimationOnly
Анимация слишком быстрая или медленнаяAnimationFrameDelayMs; эффективное время GIF использует единицы 10 мс
Память растёт при больших многокадровых файлахРежим отображения, разрешение, кэш страниц и явное закрытие сессии
Метаданные являются null, или &meta возвращает 501Ожидаемое ограничение этого пакета; рендеринг не затронут

Была ли эта страница полезной?