]> Creatis software - gdcm.git/blob - Example/TestWriteSimple.cxx
ENH: Cleanup the cmakelist, cmake 1.8 was barely supported anyway
[gdcm.git] / Example / TestWriteSimple.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: TestWriteSimple.cxx,v $
5   Language:  C++
6   Date:      $Date: 2005/07/08 12:02:02 $
7   Version:   $Revision: 1.12 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18 #include "gdcmFile.h"
19 #include "gdcmFileHelper.h"
20
21 int main(int argc, char *argv[])
22 {
23    if (argc < 3) 
24    {
25       std::cerr << "Usage :" << std::endl << argv[0]
26                 << " InputFile OutputDicom" << std::endl;
27       return 0;
28    }
29
30    std::string header = argv[1];
31    const char *output = argv[2];
32
33    gdcm::File       *f1 = new gdcm::File( );
34    f1->SetFileName ( header );
35    f1->Load( );
36    
37    gdcm::FileHelper *f2 = new gdcm::FileHelper( f1 );
38
39    // If the following call is important, then the API sucks. Why is it
40    // required to allocate PixelData when we are not using it !?
41    uint8_t* PixelData = f2->GetImageData(); //EXTREMELY IMPORTANT
42    //Otherwise ReadPixel == -1 -> the dicom writing fails completely
43
44    int dataSize    = f2->GetImageDataSize();
45    // unsigned char cast is necessary to be able to delete the buffer
46    // since deleting a void* is not allowed in c++
47    uint8_t *imageData = (uint8_t *)f2->GetImageData();
48
49    f2->SetImageData( imageData, dataSize );
50
51    f2->WriteDcmExplVR( output );
52
53    delete f1;
54    delete f2;
55    //delete PixelData; //Does GetImageData return the same pointer ?
56    (void)PixelData;
57
58    return 0;
59 }
60