The main interface classes are:
DJLSEncoderRegistration::registerCodecs(); // register JPEG codecs DcmFileFormat fileformat; if (fileformat.loadFile("test.dcm").good()) { DcmDataset *dataset = fileformat.getDataset(); DcmItem *metaInfo = fileformat.getMetaInfo(); DJLSRepresentationParameter rp(0, OFTrue); // parameters for lossless // this causes the lossless JPEG-LS version of the dataset to be created dataset->chooseRepresentation(EXS_JPEGLSLossless, ¶ms); // check if everything went well if (dataset->canWriteXfer(EXS_JPEGLSLossless)) { // force the meta-header UIDs to be re-generated when storing the file // since the UIDs in the data set may have changed delete metaInfo->remove(DCM_MediaStorageSOPClassUID); delete metaInfo->remove(DCM_MediaStorageSOPInstanceUID); // store in lossless JPEG format fileformat.saveFile("test_jpls.dcm", EXS_JPEGLSLossless); } } DJLSEncoderRegistration::cleanup(); // deregister JPEG-LS codecs
The following example shows how to decompress a JPEG-LS compressed DICOM image file:
DJLSDecoderRegistration::registerCodecs(); // register JPEG-LS codecs DcmFileFormat fileformat; if (fileformat.loadFile("test_jpls.dcm").good()) { DcmDataset *dataset = fileformat.getDataset(); // decompress data set if compressed dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL); // check if everything went well if (dataset->canWriteXfer(EXS_LittleEndianExplicit)) { fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit); } } DJLSDecoderRegistration::cleanup(); // deregister JPEG-LS codecs