Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A C# DICOM Library
branch: master

This branch is 67 commits ahead, 1 commit behind rexcardan:master

Made it easier to get data from private elements

Tags.AddEntry for DICOM data dictionary entry
or DCM.GetUnknownVRAs<> method
latest commit d91277c06b
Rex Cardan, PhD authored anders9ustafsson committed

Portable Evil DICOM

Copyright (c) 2011-2014 Rex Cardan. Portable Class Library adaptation (c) 2012-2014 Anders Gustafsson, Cureos AB.

A simple to use C# library for reading and manipulating DICOM files. Github is just the distro.

This project is a Portable Class Library adapted fork of Rex Cardan's original Evil DICOM library. For general information, online API and Getting Started tutorials, see here.


The EvilDicom.Core Visual Studio solution contains a Portable Class Library project and a unit test project. The PCL library EvilDICOM.Core supports the following targets:

  • .NET Framework version 4.5 and higher
  • Windows 8 and higher (f.k.a. Metro)
  • Silverlight version 5 and higher
  • Windows Phone (Silverlight) version 8 and higher
  • Windows Phone 8.1 and higher
  • Xamarin.Android
  • Xamarin.iOS

Public API Differences

To meet the requirements of a Portable Class Library project, the PCL library public API differs from Rex Cardan's original .NET 4 library as follows:

  • DICOMBinaryReader and DICOMBinaryWriter constructors, DICOMFileReader.Read, DICOMFileReader.ReadFileMetadata, DICOMFileWriter.WriteLittleEndian, DICOMObject.Open and DICOMObject.SaveAs methods takes a Stream argument instead of a file path string.

PCL example usage

Read a DICOM file with the name path:

var dcm = DICOMFileReader.Read(File.OpenRead(path));            // .NET and (Windows Phone) Silverlight applications

Write DICOM object dcm to a file with the name path:

DICOMFileWriter.WriteLittleEndian(File.OpenWrite(path), dcm);   // .NET and (Windows Phone) Silverlight applications
Something went wrong with that request. Please try again.