ปลั๊กอิน 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 ms = 10 FPS; การกำหนดเวลา GIF ใช้หน่วย 10 ms) และ 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. จึงควรวางแผน 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 เสมอ | คาดหวังในแพ็กเกจนี้ — ดูหมายเหตุด้านบน |
หน้านี้เป็นประโยชน์หรือไม่?