X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkWriteDicomSeriesGenericFilter.txx;h=a2bccc4aa0daa52fbef3b8a34cb115b3eb9cc20c;hb=5578995d9a82792833333eeb3dd5c8ecac967293;hp=9974d177e25e5fea602d8791bb43bac972aa9bde;hpb=6ec99bd65ed1fed5bf1fef20eb0e52243a82763a;p=clitk.git diff --git a/tools/clitkWriteDicomSeriesGenericFilter.txx b/tools/clitkWriteDicomSeriesGenericFilter.txx index 9974d17..a2bccc4 100644 --- a/tools/clitkWriteDicomSeriesGenericFilter.txx +++ b/tools/clitkWriteDicomSeriesGenericFilter.txx @@ -139,7 +139,7 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() namesGenerator->SetInputDirectory( m_ArgsInfo.inputDir_arg ); namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg ); typename ReaderType::FileNamesContainer filenames_in = namesGenerator->GetInputFileNames(); - typename ReaderType::FileNamesContainer filenames_out; + typename ReaderType::FileNamesContainer filenames_out = namesGenerator->GetOutputFileNames(); // Output the dicom files unsigned int numberOfFilenames = filenames_in.size(); @@ -153,6 +153,12 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() // Read the series typename ReaderType::Pointer reader = ReaderType::New(); + if (m_ArgsInfo.preserve_flag) { +#if GDCM_MAJOR_VERSION >= 2 + gdcmIO->LoadPrivateTagsOn(); + gdcmIO->KeepOriginalUIDOn(); +#endif + } reader->SetImageIO( gdcmIO ); reader->SetFileNames( filenames_in ); try { @@ -308,13 +314,12 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() bool useInputFileUID = true; if (m_ArgsInfo.newSeriesUID_flag || m_ArgsInfo.newStudyUID_flag || seriesUIDGiven || studyUIDGiven) { useInputFileUID = false; + } + else { #if GDCM_MAJOR_VERSION < 2 gdcmIO->SetKeepOriginalUID(true); #endif - } - else { namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg ); - filenames_out = namesGenerator->GetOutputFileNames(); } filenames_out.resize(numberOfFilenames); @@ -356,9 +361,9 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() // study description if (studyUIDGiven || m_ArgsInfo.newStudyUID_flag) { if (!studyIDGiven) - itk::EncapsulateMetaData( *((*dictionary)[fni]), studyIDKey, m_ArgsInfo.outputDir_arg ); + itk::EncapsulateMetaData( *((*dictionary)[fni]), studyIDKey,itksys::SystemTools::GetFilenameName( m_ArgsInfo.outputDir_arg )); if (!studyDescriptionGiven) - itk::EncapsulateMetaData( *((*dictionary)[fni]), studyDescriptionKey, m_ArgsInfo.outputDir_arg ); + itk::EncapsulateMetaData( *((*dictionary)[fni]), studyDescriptionKey,itksys::SystemTools::GetFilenameName( m_ArgsInfo.outputDir_arg )); itk::EncapsulateMetaData( *((*dictionary)[fni]), "0008|0020", instanceDate.str() ); itk::EncapsulateMetaData( *((*dictionary)[fni]), "0008|0030", instanceTime.str() ); @@ -367,9 +372,9 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() // series description/number if (seriesUIDGiven || m_ArgsInfo.newSeriesUID_flag) { if (!seriesDescriptionGiven) - itk::EncapsulateMetaData( *((*dictionary)[fni]), seriesDescriptionKey, "blabla");//m_ArgsInfo.outputDir_arg ); + itk::EncapsulateMetaData( *((*dictionary)[fni]), seriesDescriptionKey, itksys::SystemTools::GetFilenameName(m_ArgsInfo.outputDir_arg) ); if (!seriesNumberGiven) - itk::EncapsulateMetaData( *((*dictionary)[fni]), seriesNumberKey, m_ArgsInfo.outputDir_arg ); + itk::EncapsulateMetaData( *((*dictionary)[fni]), seriesNumberKey, itksys::SystemTools::GetFilenameName(m_ArgsInfo.outputDir_arg) ); itk::EncapsulateMetaData( *((*dictionary)[fni]), "0008|0012", instanceDate.str() ); itk::EncapsulateMetaData( *((*dictionary)[fni]), "0008|0013", instanceTime.str() ); @@ -378,6 +383,9 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() // file UIDs are recreated for new studies or series if (!useInputFileUID) { + if (m_ArgsInfo.verbose_flag) + std::cout << "Recreating file UIDs" << std::endl; + std::string fileUID; #if GDCM_MAJOR_VERSION >= 2 gdcm::UIDGenerator fid; @@ -405,6 +413,8 @@ WriteDicomSeriesGenericFilter::UpdateWithDimAndPixelType() // Write try { + if (m_ArgsInfo.verbose_flag) + std::cout << seriesWriter << std::endl; seriesWriter->Update(); } catch( itk::ExceptionObject & excp ) { std::cerr << "Error: Exception thrown while writing the series!!" << std::endl;