X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FTestWriteSimple.cxx;h=957ec144c28042041835d422e650e62e371b9738;hb=90c918a795e4a1892af2cd120eb20d6311499387;hp=45b9b4eb693b138924e20c3c5d4aaac39dd3b9a1;hpb=d00078b5e19310b379c8339fa8fe38362e8ca392;p=gdcm.git diff --git a/Example/TestWriteSimple.cxx b/Example/TestWriteSimple.cxx index 45b9b4eb..957ec144 100644 --- a/Example/TestWriteSimple.cxx +++ b/Example/TestWriteSimple.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestWriteSimple.cxx,v $ Language: C++ - Date: $Date: 2005/01/20 16:16:58 $ - Version: $Revision: 1.7 $ + Date: $Date: 2005/07/08 12:02:02 $ + Version: $Revision: 1.12 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -15,44 +15,46 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ -#include "gdcmHeader.h" #include "gdcmFile.h" +#include "gdcmFileHelper.h" -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - - if (argc < 3) - { - std::cerr << "Usage :" << std::endl << argv[0] << - " InputHeader OutputDicom" << std::endl; - return 0; - } - - std::string header = argv[1]; - const char *output = argv[2]; - - gdcm::Header *f1 = new gdcm::Header( header ); - gdcm::FileHelper *f2 = new gdcm::FileHelper( f1 ); - - // If the following call is important, then the API sucks. Why is it - // required to allocate PixelData when we are not using it !? - uint8_t* PixelData = f2->GetImageData(); //EXTREMELY IMPORTANT - //Otherwise ReadPixel == -1 -> the dicom writing fails completely - - int dataSize = f2->GetImageDataSize(); - // unsigned char cast is necessary to be able to delete the buffer - // since deleting a void* is not allowed in c++ - uint8_t *imageData = (uint8_t *)f2->GetImageData(); - - f2->SetImageData( imageData, dataSize ); - - f2->WriteDcmExplVR( output ); - - delete f1; - delete f2; - //delete PixelData; //Does GetImageData return the same pointer ? - (void)PixelData; - - return 0; + if (argc < 3) + { + std::cerr << "Usage :" << std::endl << argv[0] + << " InputFile OutputDicom" << std::endl; + return 0; + } + + std::string header = argv[1]; + const char *output = argv[2]; + + gdcm::File *f1 = new gdcm::File( ); + f1->SetFileName ( header ); + f1->Load( ); + + gdcm::FileHelper *f2 = new gdcm::FileHelper( f1 ); + + // If the following call is important, then the API sucks. Why is it + // required to allocate PixelData when we are not using it !? + uint8_t* PixelData = f2->GetImageData(); //EXTREMELY IMPORTANT + //Otherwise ReadPixel == -1 -> the dicom writing fails completely + + int dataSize = f2->GetImageDataSize(); + // unsigned char cast is necessary to be able to delete the buffer + // since deleting a void* is not allowed in c++ + uint8_t *imageData = (uint8_t *)f2->GetImageData(); + + f2->SetImageData( imageData, dataSize ); + + f2->WriteDcmExplVR( output ); + + delete f1; + delete f2; + //delete PixelData; //Does GetImageData return the same pointer ? + (void)PixelData; + + return 0; }