In this post, I will be showing you how to read DICOM image files in Java.
ImageIO does not support DICOM file types by default so you will need to use an ImageIO plugin or an external library. I will demonstrate using an Open source ImageIO plugin called TwelveMonkeys (which extends ImageIO to provide DICOM reading support), and using the JDeli Image Library.
First an introduction to Dicom images…
What is DICOM?
DICOM stands for Digital Imaging and Communications in Medicine. DICOM is a standard for medical images. It sets out how to store, exchange and transmit them. You can read more about DICOM images in our article What is Dicom.
The filename extension for DICOM files is:
How to read a DICOM image in Java with ImageIO
Step 1 Download dcm4che plugin and install it.
Step 2 Create a File handle, InputStream or URL pointing to the raw DICOM image.
Step 3 ImageIO will now be able to read a DICOM file into a BufferedImage. This syntax is like so:
BufferedImage image = ImageIO.read(dicomFileOrInputStreamOrURL)
How to read a DICOM image in Java with JDeli
Step 1 Add JDeli to your class or module path. (download the trial jar).
Step 2 Create a File handle, InputStream pointing to the raw DICOM image. You can also use a byte containing the image data.
Step 3 Read the DICOM image into a BufferedImage
BufferedImage image = JDeli.read(dicomFile);
Why use JDeli to read Dicom?
JDeli offers a range of advantages over ImageIO and alternatives, including:
- prevent heap related JVM crashes
- improve read performance
- supports threading
- superior image scaling algorithms
Read and write images in Java with one line of code
Read an Image with
BufferedImage image = JDeli.read(streamOrFile);
and write an Image with
JDeli.write(myBufferedImage, OutputFormat.HEIC, outputStreamOrFile)