Плагин DICOM
Просмотр медицинских изображений с DicomPlugin
Плагин DICOM добавляет просмотр медицинских изображений в Doconut: многокадровые файлы DICOM отображаются как анимированный обзор, отдельные кадры или и то, и другое. DICOM — это формат только для плагинов — без этого плагина (и его лицензии) файлы .dcm нельзя открыть вовсе.
Установка пакета
dotnet add package Doconut.NET6.DicomКоманда без указания версии устанавливает последнюю стабильную версию. Чтобы зафиксировать плагин на текущем выпуске 26.7.0, укажите версию отдельно:
dotnet add package Doconut.NET6.Dicom --version 26.7.0Сохраняйте пакет DICOM той же версии, что и Doconut.NET6. Идентификатор пакета — Doconut.NET6.Dicom; .26.7.0 появляется только в имени загруженного файла .nupkg.
Регистрация плагина
builder.Services.AddDoconut(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Плагин (Name: "Doconut DICOM Viewer") регистрирует просмотрщики для расширений .dcm и .ima, контролируемые возможностью Dicom. Отсутствие или недостаточность непостоянного разрешения обычно приводит к ошибке во время AddDoconut(). Поскольку ни один встроенный просмотрщик не обрабатывает эти форматы, ограничение времени выполнения также жёстко отказывает, если возможность позже становится недоступной:
LicenseException: This document type requires the 'Dicom' plugin license.Открытие файла DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});Режимы отображения
Многокадровые файлы DICOM могут быть представлены тремя способами (DicomDisplayMode):
| Режим | Создаваемые страницы | Назначение |
|---|---|---|
AnimationOnly | Страница 1 = анимированный GIF, повторяющий все кадры | Быстрый кинематографический просмотр |
FramesOnly | Страницы 1..N = один статический PNG на кадр | Диагностическая навигация кадр за кадром |
AnimationAndFrames (по умолчанию) | Страница 1 = анимированный GIF, страницы 2..N = статические кадры | Обзор + детали в одном документе |
Время анимации контролируется параметром AnimationFrameDelayMs (по умолчанию 100 мс = 10 FPS; гранулярность GIF — 10 мс) и LoopCount (0 = бесконечный цикл).
Разрешение
DicomConfig по умолчанию рендерит с 100 DPI по каждой оси. Свойства разрешения имеют цепочку резервных значений, о которой стоит знать: если вы явно не задаёте HorizontalResolution/VerticalResolution, они берут значение из BaseConfig.ImageResolution, если оно настроено, и только затем возвращаются к 100.
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };Доступность метаданных DICOM в .NET 6
Отображение страниц DICOM, отдельные кадры, анимация, трансформации и водяные знаки поддерживаются. Технические метаданные тегов недоступны в пакете .NET 6, поскольку читатель метаданных не имеет сборки для .NET 6.
Viewer.GetDicomMetadataAsync(token) поэтому возвращает null для сессии DICOM и записывает одноразовое предупреждение. Соответствующий запрос посредника ?token=…&meta возвращает HTTP 501 Not Implemented с постоянным кодом ошибки dicom_metadata_unsupported. Используйте пакет .NET 8, когда требуются технические метаданные DICOM.
Полная справка по конфигурации
Полная таблица свойств DicomConfig находится в API Reference → Format Configs. Пример из производственного приложения с переключателем по расширениям:
".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 | Ожидаемое ограничение .NET 6; рендеринг не затронут |
Была ли эта страница полезной?