From 560f6093508d19deadf23d5aa14fe11d3c2289a9 Mon Sep 17 00:00:00 2001 From: jpr Date: Fri, 21 Mar 2003 16:18:29 +0000 Subject: [PATCH] exemple de changement d'entete d'une image avec extraction d'info --- Testing/TestChangeHeader.cxx | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Testing/TestChangeHeader.cxx diff --git a/Testing/TestChangeHeader.cxx b/Testing/TestChangeHeader.cxx new file mode 100644 index 00000000..06891bec --- /dev/null +++ b/Testing/TestChangeHeader.cxx @@ -0,0 +1,61 @@ +#include +#include "gdcm.h" + + + // ecriture d'un fichier DICOM à partir d'un dcmHeader correct. + // et des pixels d'une autre image + + +int main(int argc, char* argv[]) +{ + string premier, deuxieme; + char resultat[200]; + + gdcmFile *f1, *f2; + //gdcmHeader *e1, *e2; + void* imageData; + int dataSize; + + if (argc < 3) { + printf ("usage :\n testChangeEntete nomFichierPourEntete nomFichierPourDonnées \n"); + exit(0); + } + + premier = argv[1]; + f1 = new gdcmFile(premier); + f1->LoadElements(); + + deuxieme = argv[2]; + f2 = new gdcmFile(deuxieme); + f2->LoadElements(); + printf("apres LoadElements\n"); + + //f1->PrintPubElVal(); + + // On suppose que les champs DICOM du 2ieme fichier existent *effectivement* + + f1->ReplaceOrCreateByNumber(0x0028, 0x0008, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0008));// nb Frames + f1->ReplaceOrCreateByNumber(0x0028, 0x0010, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0010));// nbLig + f1->ReplaceOrCreateByNumber(0x0028, 0x0011, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0011));// nbCol + + // sans doute d'autres à mettre à jour... + + // TODO : une routine qui recoit une liste de couples (gr,el), et qui fasse le boulot. + + + dataSize = f2->GetImageDataSize(); + printf ("dataSize %d\n",dataSize); + imageData= f2->GetImageData(); + + f1->SetImageData(imageData,dataSize); + + // ou, plus joli: + //f1->SetImageData(f2->GetImageData(),f2->GetImageDataSize()); + + sprintf(resultat, "%s.vol", deuxieme.c_str()); + printf ("WriteDCM\n"); + f1->WriteDcm(resultat); +} + + + -- 2.48.1