⚠️ This is an unofficial mirror, not affiliated with DCMTK / OFFIS. For authoritative information, see the original page (https://support.dcmtk.org/docs/mod_dcmjpeg.html).

dcmjpeg: a compression/decompression library and utility apps

This module contains classes that convert between uncompressed and JPEG compressed representations (transfer syntaxes) of a DICOM image object. Both lossless and lossy JPEG processes are supported. This module implements a family of codecs that are derived from class DcmCodec and can be registered in the codec list maintained in module dcmdata.

The main interface classes are:

Tools

This module contains the following command line tools:

Examples

The following example shows how to compress a DICOM image file with lossless JPEG:

DJEncoderRegistration::registerCodecs(); // register JPEG codecs

DcmFileFormat fileformat;

if (fileformat.loadFile("test.dcm").good())

{

DcmDataset *dataset = fileformat.getDataset();

DcmItem *metaInfo = fileformat.getMetaInfo();

DJ_RPLossless params; // codec parameters, we use the defaults

// this causes the lossless JPEG version of the dataset to be created

if (dataset->chooseRepresentation(EXS_JPEGProcess14SV1, &params).good() &&

dataset->canWriteXfer(EXS_JPEGProcess14SV1))

{

// store in lossless JPEG format

fileformat.saveFile("test_jpeg.dcm", EXS_JPEGProcess14SV1);

}

}

DJEncoderRegistration::cleanup(); // deregister JPEG codecs

The following example shows how to decompress a JPEG-compressed DICOM image file:

DJDecoderRegistration::registerCodecs(); // register JPEG codecs

DcmFileFormat fileformat;

if (fileformat.loadFile("test_jpeg.dcm").good())

{

DcmDataset *dataset = fileformat.getDataset();

// decompress data set if compressed

if (dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL).good() &&

dataset->canWriteXfer(EXS_LittleEndianExplicit))

{

fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit);

}

}

DJDecoderRegistration::cleanup(); // deregister JPEG codecs