16 unstable releases (6 breaking)

0.7.0 Apr 25, 2024
0.6.3 Nov 21, 2023
0.6.2 Oct 31, 2023
0.6.0 Jul 23, 2023
0.1.0 Aug 31, 2019

#74 in Images

Download history 571/week @ 2024-01-29 433/week @ 2024-02-05 472/week @ 2024-02-12 711/week @ 2024-02-19 585/week @ 2024-02-26 642/week @ 2024-03-04 943/week @ 2024-03-11 551/week @ 2024-03-18 272/week @ 2024-03-25 343/week @ 2024-04-01 229/week @ 2024-04-08 682/week @ 2024-04-15 730/week @ 2024-04-22 489/week @ 2024-04-29 320/week @ 2024-05-06 726/week @ 2024-05-13

2,274 downloads per month
Used in 7 crates (6 directly)


45K SLoC


CratesIO Documentation

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.

Using as a library

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()?;

Cargo features

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 library
  • pixeldata: the pixel data abstraction library. The Cargo features image, ndarray are re-exported from dicom-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.


~238K SLoC