Плагин DICOM
Просмотр медицинских изображений с DicomPlugin
Плагин DICOM добавляет просмотр медицинских изображений в Doconut: многокадровые файлы DICOM отображаются как анимированный обзор, отдельные кадры или и то, и другое. DICOM — это формат только для плагина — без этого плагина (и его лицензии) файлы .dcm нельзя открыть.
В .NET Framework 4.7.2 файлы DICOM полностью отображаются — страницы, кадры и анимация — но технические метаданные (теги DICOM) недоступны.
Viewer.GetDicomMetadataAsyncвсегда возвращаетnull, а запрос метаданных виджета отвечает501 Not Implemented. ИспользуйтеDoconut.NET8, если вашему приложению нужны теги.
Установить пакет
Install-Package Doconut.NETFramework.DicomСохраняйте пакет DICOM той же версии, что и Doconut.NETFramework.
Зарегистрировать плагин
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Плагин (Name: "Doconut DICOM Viewer") регистрирует просмотрщики для расширений .dcm и .ima, ограниченные возможностью Dicom. Если лицензия её не предоставляет, DoconutHost.Initialize бросает исключение из Application_Start, и сайт отвечает на каждый запрос пустым 500 (причина находится в журнале событий Windows). Поскольку ни один встроенный просмотрщик не обрабатывает эти форматы, попытка открыть файл завершается ошибкой, если возможность позже становится недоступной:
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 (default) | Страница 1 = анимированный GIF, страницы 2..N = статические кадры | Обзор и детали в одном документе |
Время анимации контролируется параметром AnimationFrameDelayMs (по умолчанию 100 мс = 10 FPS; тайминг GIF использует единицы 10 мс) и LoopCount (0 = бесконечный цикл).
Просмотрщик определяет, что страница 1 анимирована, отправляя запрос HEAD. Поэтому обработчик DocImage.axd должен принимать HEAD в Web.config (verb="GET,HEAD,POST", см. Установка); без этого IIS отвечает 404 до запуска Doconut, и обнаружение анимации никогда не срабатывает.
Разрешение
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
var metadata = await viewer.GetDicomMetadataAsync(token);
// On .NET Framework this is always null: the DICOM metadata reader is not available for this
// target. Pages, frames and animation render normally.Метод присутствует в этом пакете, чтобы код, общий с пакетом .NET 8, компилировался, но чтение тегов DICOM требует компонента, который не имеет сборки для .NET Framework. Планируйте пользовательский интерфейс без них — например, скрывайте панель метаданных, когда результат null.
Полная справка по конфигурации
Полная таблица свойств DicomConfig находится в Конфигурации форматов. При выборе по расширению случай DICOM выглядит так:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Водяной знак и поведение памяти
Обычное решение о водяном знаке страницы также применяется к выводу DICOM. Для анимированного вывода каждый кадр GIF помечается, поэтому знак остаётся видимым на протяжении воспроизведения. Пользовательский DocOptions.Watermark используется только при наличии лицензии, позволяющей пользовательские водяные знаки; он не может заменить оценочный водяной знак.
Многокадровые исследования могут генерировать как анимацию, так и одну статическую страницу на кадр. AnimationAndFrames обеспечивает наиболее богатую навигацию, но также требует наибольших ресурсов рендеринга и памяти — и на одном сервере эта память принадлежит процессу‑рабочему IIS. Для больших исследований:
- используйте
FramesOnly, когда проверка кадров важнее воспроизведения; - избегайте увеличения обеих осей разрешения без измерения памяти;
- явно закрывайте сессию, когда исследование больше не открыто;
- включайте
CachePagesтолько тогда, когда повторный доступ стоит сохранённых изображений.
Устранение неполадок
| Симптом | Проверка |
|---|---|
.dcm отмечается как неподдерживаемый | Регистрация DicomPlugin и развертывание пакета |
Каждый запрос отвечает пустым 500 после добавления плагина | Лицензия предоставляет Dicom — журнал событий Windows, источник ASP.NET |
| Отображается только одна страница | Источник может быть однокадровым, или DisplayMode установлен в AnimationOnly |
| Страница 1 не анимируется | Обработчик в Web.config принимает HEAD |
| Анимация слишком быстрая или медленная | AnimationFrameDelayMs; тайминг GIF использует единицы 10 мс |
| Память растёт при больших многокадровых файлах | Режим отображения, разрешение, кэш страниц и явное закрытие сессии |
Метаданные всегда null | Ожидается в этом пакете — см. примечание вверху |
Была ли эта страница полезной?