Plugin DICOM
Xem hình ảnh y tế với DicomPlugin
Plugin DICOM thêm khả năng xem hình ảnh y tế vào Doconut: các tệp DICOM đa khung được hiển thị dưới dạng tổng quan hoạt ảnh, các khung riêng lẻ, hoặc cả hai. DICOM là một định dạng chỉ có plugin — nếu không có plugin này (và khả năng cấp phép của nó), các tệp .dcm không thể mở được.
Trên .NET Framework 4.7.2, các tệp DICOM được hiển thị đầy đủ — trang, khung và hoạt ảnh — nhưng siêu dữ liệu kỹ thuật (các thẻ DICOM) không khả dụng.
Viewer.GetDicomMetadataAsyncluôn trả vềnull, và yêu cầu siêu dữ liệu của widget trả lời501 Not Implemented. Sử dụngDoconut.NET8nếu ứng dụng của bạn cần các thẻ.
Cài đặt gói
Install-Package Doconut.NETFramework.DicomGiữ phiên bản gói DICOM giống với Doconut.NETFramework.
Đăng ký plugin
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Plugin (Name: "Doconut DICOM Viewer") đăng ký các trình xem cho các phần mở rộng .dcm và .ima, được kiểm soát bởi khả năng Dicom. Nếu giấy phép không cấp quyền, DoconutHost.Initialize sẽ ném lỗi từ Application_Start và trang sẽ trả lời mọi yêu cầu bằng một 500 trống (lý do nằm trong nhật ký sự kiện Windows). Vì không có trình xem tích hợp nào xử lý các định dạng này, việc mở một tệp sẽ thất bại ngay nếu khả năng đó sau này không còn khả dụng:
LicenseException: This document type requires the 'Dicom' plugin license.Mở tệp DICOM
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});Các chế độ hiển thị
Các tệp DICOM đa khung có thể được trình bày theo ba cách (DicomDisplayMode):
| Chế độ | Trang tạo ra | Dùng cho |
|---|---|---|
AnimationOnly | Trang 1 = GIF hoạt ảnh lặp lại tất cả các khung | Xem nhanh kiểu điện ảnh |
FramesOnly | Trang 1..N = một PNG tĩnh cho mỗi khung | Điều hướng chẩn đoán khung‑khung |
AnimationAndFrames (default) | Trang 1 = GIF hoạt ảnh, các trang 2..N = các khung tĩnh | Tổng quan và chi tiết trong một tài liệu |
Thời gian hoạt ảnh được điều khiển bởi AnimationFrameDelayMs (mặc định 100 ms = 10 FPS; thời gian GIF sử dụng đơn vị 10 ms) và LoopCount (0 = vòng lặp vô hạn).
Trình xem phát hiện rằng trang 1 là hoạt ảnh bằng cách gửi một yêu cầu HEAD cho nó. Trình xử lý DocImage.axd do đó phải chấp nhận HEAD trong Web.config (verb="GET,HEAD,POST", xem Cài đặt); nếu không, IIS sẽ trả lời 404 trước khi Doconut chạy và việc phát hiện hoạt ảnh sẽ không bao giờ hoạt động.
Độ phân giải
DicomConfig hiển thị ở 100 DPI mỗi trục theo mặc định. Nếu bạn không đặt HorizontalResolution/VerticalResolution một cách rõ ràng, chúng sẽ theo BaseConfig.ImageResolution khi giá trị đó được đặt, và chỉ sau đó mới quay lại 100.
// Tăng đồng đều qua thuộc tính cơ sở…
new DicomConfig { ImageResolution = 150 };
// …hoặc kiểm soát theo từng trục
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };Siêu dữ liệu DICOM
var metadata = await viewer.GetDicomMetadataAsync(token);
// Trên .NET Framework, giá trị này luôn là null: trình đọc siêu dữ liệu DICOM không khả dụng cho trường hợp này
// đích. Các trang, khung và hoạt ảnh được hiển thị bình thường.Phương thức này tồn tại trong gói này để mã chia sẻ với gói .NET 8 có thể biên dịch, nhưng việc đọc các thẻ DICOM cần một thành phần không có bản dựng cho .NET Framework. Hãy lên kế hoạch giao diện người dùng của bạn mà không có chúng — ví dụ, ẩn bảng siêu dữ liệu khi kết quả là null.
Tham chiếu cấu hình đầy đủ
Bảng thuộc tính DicomConfig đầy đủ nằm trong Cấu hình Định dạng. Trong một lựa chọn theo phần mở rộng, trường hợp DICOM trông như sau:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };Đánh dấu và hành vi bộ nhớ
Quyết định đánh dấu trang bình thường cũng áp dụng cho đầu ra DICOM. Đối với đầu ra hoạt ảnh, mỗi khung GIF đều được dán dấu, vì vậy dấu vẫn hiển thị trong suốt quá trình phát. Một DocOptions.Watermark tùy chỉnh chỉ được sử dụng khi giấy phép cho phép các dấu nước tùy chỉnh; nó không thể thay thế dấu nước đánh giá.
Các nghiên cứu đa khung có thể tạo cả một hoạt ảnh và một trang tĩnh cho mỗi khung. AnimationAndFrames cung cấp khả năng điều hướng phong phú nhất nhưng cũng có chi phí render và bộ nhớ cao nhất — và trên một máy chủ duy nhất bộ nhớ đó thuộc về tiến trình worker của IIS. Đối với các nghiên cứu lớn:
- sử dụng
FramesOnlykhi việc kiểm tra khung quan trọng hơn phát lại; - tránh tăng cả hai trục độ phân giải mà không đo lượng bộ nhớ;
- đóng phiên một cách rõ ràng khi nghiên cứu không còn mở;
- giữ
CachePagesbật chỉ khi việc truy cập lặp lại đáng giá các hình ảnh đã lưu.
Khắc phục sự cố
| Triệu chứng | Kiểm tra |
|---|---|
.dcm được báo cáo là không được hỗ trợ | DicomPlugin đăng ký và triển khai gói |
Mọi yêu cầu trả lời một 500 trống sau khi thêm plugin | Giấy phép cấp Dicom — nhật ký sự kiện Windows, nguồn ASP.NET |
| Chỉ một trang hiển thị | Nguồn có thể là khung đơn, hoặc DisplayMode là AnimationOnly |
| Trang 1 không hoạt ảnh | Trình xử lý trong Web.config chấp nhận HEAD |
| Hoạt ảnh quá nhanh hoặc quá chậm | AnimationFrameDelayMs; thời gian GIF sử dụng đơn vị 10 ms |
| Bộ nhớ tăng lên trên các tệp đa khung lớn | Chế độ hiển thị, độ phân giải, bộ nhớ đệm trang, và đóng phiên một cách rõ ràng |
Siêu dữ liệu luôn là null | Dự kiến trên gói này — xem ghi chú ở trên cùng |
Trang này có hữu ích không?