DCMTK-dcmimage-压缩/解压缩库

Posted itzyjr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DCMTK-dcmimage-压缩/解压缩库相关的知识,希望对你有一定的参考价值。

此模块包含在DICOM图像对象的未压缩和JPEG压缩表示(传输语法)之间进行转换的类。支持无损和有损JPEG处理。此模块实现了一系列从类DcmCodec派生的编解码器,可以在模块dcmdata中维护的编解码器列表中注册。

示例:
以下示例显示如何使用无损JPEG压缩DICOM图像文件:

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
  dataset->chooseRepresentation(EXS_JPEGProcess14SV1, &params);
  // check if everything went well
  if (dataset->canWriteXfer(EXS_JPEGProcess14SV1)) 
    // 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_jpeg.dcm", EXS_JPEGProcess14SV1);
  

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

以下示例显示如何解压缩JPEG压缩的DICOM图像文件:

DJDecoderRegistration::registerCodecs(); // register JPEG codecs
DcmFileFormat fileformat;
if (fileformat.loadFile("test_jpeg.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);
  

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

以上是关于DCMTK-dcmimage-压缩/解压缩库的主要内容,如果未能解决你的问题,请参考以下文章

DCMTK-dcmimage-压缩/解压缩库

在提交到存储库之前解压缩压缩的数据文件

什么是压缩/解压缩文件的好 Java 库? [关闭]

PHP解压缩没有外部库[重复]

压缩与解压缩

Qt之zip压缩/解压缩(QuaZIP)