dicom
is a library for the DICOM standard.
It is part of the DICOM-rs project,
an ecosystem of modules and tools for DICOM compliant systems.
This collection provides a pure Rust implementation of the DICOM standard, allowing users to read and write DICOM data over files and other sources, while remaining intrinsically efficient, fast, intuitive, and safe to use.
This crate exposes the dicom-object
crate directly via the object
module,
which has a high-level API for reading, writing, and manipulating DICOM objects.
Other key components of the full library are available in this one as well,
albeit representing different levels of abstraction.
An example of use follows.
For more details, please visit the dicom-object
documentation
or the full library documentation.
use dicom::core::Tag;
use dicom::object::{open_file, Result};
let obj = open_file("0001.dcm")?;
let patient_name = obj.element_by_name("PatientName")?.to_str()?;
let modality = obj.element_by_name("Modality")?.to_str()?;
let pixel_data_bytes = obj.element(Tag(0x7FE0, 0x0010))?.to_bytes()?;
This crate enables the inventory-based transfer syntax registry by default,
which allows for a seamless integration of additional transfer syntaxes
without changing the application.
In environments which do not support this, the feature can be disabled.
Please see the documentation of dicom-transfer-syntax-registry
for more information.
The following root modules are behind Cargo features enabled by default:
ul
: the DICOM upper layer protocol librarypixeldata
: the pixel data abstraction library. The Cargo featuresimage
,ndarray
are re-exported fromdicom-pixeldata
and may be enabled at will through the parent crate.
If you do not intend to use these modules, you can disable these features accordingly.