#include <dcmtk/config/osconfig.h>
#include <dcmtk/dcmdata/dctk.h>
//读数据
DcmFileFormat dfile;
OFCondition result = dfile.loadFile(path.c_str()); // 加载文件
if (result.bad())
return ERROR;
DcmMetaInfo* Metalnfo = dfile.getMetaInfo(); // 文件元信息
DcmTag Tag = Metalnfo->getTag(); // 从元信息中获取标签
DcmDataset* data = dfile.getDataset(); // 数据集
DcmElement* element = NULL;
result = data->findAndGetElement(DCM_PixelData, element);
if (result.bad())
return ERROR;
unsigned short* data;
result = element->getUint16Array(data);
//保存数据
data->putAndInsertUint16Array(DCM_PixelData, data, height * width * z);
data->putAndInsertString(DCM_NumberOfFrames, std::to_string(z).c_str());
data->putAndInsertString(DCM_Rows, std::to_string(height).c_str());
data->putAndInsertString(DCM_Columns, std::to_string(width).c_str());
char temp[255];
data->putAndInsertString(DCM_SOPInstanceUID, temp);
dfile.getMetaInfo()->putAndInsertString(DCM_MediaStorageSOPInstanceUID, temp);
OFCondition status = dfile.saveFile(path.c_str(), EXS_LittleEndianExplicit);