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.DicomDoconut.NETFramework와 동일한 버전으로 DICOM 패키지를 유지하십시오.
플러그인 등록
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 ms = 10 FPS; GIF 타이밍은 10 ms 단위 사용)와 LoopCount(0 = 무한 반복)으로 제어됩니다.
뷰어는 페이지 1이 애니메이션인지 확인하기 위해 HEAD 요청을 보냅니다. 따라서 DocImage.axd 핸들러는 Web.config에서 HEAD을 받아들여야 합니다(verb="GET,HEAD,POST", 설치 참조); 이가 없으면 Doconut이 실행되기 전에 IIS가 404로 응답하여 애니메이션 감지가 작동하지 않습니다.
해상도
DicomConfig는 기본적으로 축당 100 DPI로 렌더링됩니다. HorizontalResolution/VerticalResolution를 명시적으로 설정하지 않으면, 해당 값이 설정된 경우 BaseConfig.ImageResolution를 따르고, 그때만 100으로 되돌아갑니다.
// 기본 속성을 통한 균일 버프…
new DicomConfig { ImageResolution = 150 };
// …또는 축별 제어
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };DICOM 메타데이터
var metadata = await viewer.GetDicomMetadataAsync(token);
// .NET Framework에서는 이것이 항상 null입니다: DICOM 메타데이터 리더를 사용할 수 없습니다.
// target. 페이지, 프레임 및 애니메이션이 정상적으로 렌더링됩니다.이 메서드는 .NET 8 패키지와 공유된 코드가 컴파일되도록 이 패키지에 존재하지만, DICOM 태그를 읽으려면 .NET Framework 빌드가 없는 구성 요소가 필요합니다. 태그가 없음을 전제로 UI를 설계하십시오 — 예를 들어, 결과가 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 ms 단위 사용 |
| 대형 다중 프레임 파일에서 메모리 증가 | 표시 모드, 해상도, 페이지 캐시, 명시적 세션 종료 |
메타데이터가 항상 null임 | 이 패키지에서는 예상된 동작 — 상단의 주석을 참조 |
이 페이지가 도움이 되었나요?