DCMTK: записать файл DICOM в память

Я использую DCMTK для записи файлов DICOM на диск, и это работает довольно хорошо. Итак, я вкратце сделаю следующее:

DcmDataset * ds = image->dcm_file_format->getDataset();
// Modify DICOM as needed...
DcmFileFormat file_format(ds);
file_format.saveFile(filename);

Это неплохо работает. Однако я хотел бы записать содержимое в какой-то буфер памяти. Итак, я хотел бы сделать следующее:

char * buffer = new char[file_length];

а затем как-то использовать file_format для записи в этот буфер вместо файла. Я вижу, что в DcmFileFormat есть метод записи, но я не мог понять, как его использовать, где я мог бы указать свой собственный массив байтов для записи.


person Luca    schedule 14.02.2015    source источник


Ответы (1)


Вы можете ознакомиться с исходным кодом Orthanc, облегченного нейтрального архива поставщика для медицинских изображений. Orthanc записывает свои экземпляры DICOM в буферы памяти (std::string) в методе Orthanc::FromDcmtkBridge::SaveToMemoryBuffer(). Вот прямая ссылка. к этому методу.

person Tisys    schedule 16.02.2015
comment
Извините, мне нужна опция DCMTK. - person Luca; 31.03.2015
comment
Просто скопируйте / вставьте код из Orthanc ... он под лицензией GPLv3 +. Голосование против этого ответа несправедливо. - person Tisys; 01.04.2015
comment
Вот новый прямой URL-адрес метода в связи с прекращением использования кода Google: goo.gl/qTVA0E - person Tisys; 27.01.2016