From 752bd4948ee0191a504653384f121dab2955425e Mon Sep 17 00:00:00 2001 From: "eduardo.davila@creatis.insa-lyon.fr" Date: Tue, 26 May 2026 16:26:01 +0200 Subject: [PATCH] #3338 gdcm1 to gdcm2 v3.3.0 --- src/creaImageIODicomImageReader2.cpp | 21 ++++++------- src/creaImageIOOutputModel.cpp | 45 ++++++++++++++++++++++------ src/creaImageIOSimpleView.cpp | 3 +- src/creaImageIOWxGimmickView.cpp | 7 +---- 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/creaImageIODicomImageReader2.cpp b/src/creaImageIODicomImageReader2.cpp index 6220d3d..fb93314 100644 --- a/src/creaImageIODicomImageReader2.cpp +++ b/src/creaImageIODicomImageReader2.cpp @@ -66,7 +66,6 @@ namespace creaImageIO gdcm::Reader reader; reader.SetFileName( filename.c_str() ); return reader.Read(); - } //===================================================================== @@ -74,17 +73,16 @@ namespace creaImageIO vtkImageData* DicomImageReader::ReadImage(const std::string& filename) { vtkImageData* im = 0; - try + try { - mReader->SetFileName(filename.c_str()); - mReader->Update(); - im = vtkImageData::New(); - im->ShallowCopy(mReader->GetOutput()); - } - catch (...) - { - if (im!=0) im->Delete(); - im = 0; + mReader->SetFileName(filename.c_str()); + mReader->FileLowerLeftOn(); + mReader->Update(); + im = vtkImageData::New(); + im->ShallowCopy(mReader->GetOutput()); + } catch (...) { + if (im!=0) im->Delete(); + im = 0; } return im; //gdcm::Tag grouplength(0x0000,0x0000); @@ -96,7 +94,6 @@ namespace creaImageIO //std::ostream os; //de.Write(&os); - } //===================================================================== diff --git a/src/creaImageIOOutputModel.cpp b/src/creaImageIOOutputModel.cpp index 24be6c9..c17365c 100644 --- a/src/creaImageIOOutputModel.cpp +++ b/src/creaImageIOOutputModel.cpp @@ -31,16 +31,17 @@ #include "boost/algorithm/string.hpp" #if defined(USE_GDCM) -#include -#include -#include -#include + #include + #include + #include + #include #endif #if defined(USE_GDCM2) -#include -#include -#include + #include + #include + #include + #include "gdcmIPPSorter.h" #endif #if defined(USE_XERCES) @@ -110,8 +111,34 @@ namespace creaImageIO #if defined(USE_GDCM2) // TO DO double OutputModel::orderFilesWithZspacing(std::vector &im) - { - return 1; +{ + //EED 2026-05-26 + gdcm::IPPSorter s; + s.SetComputeZSpacing( true ); + s.SetZSpacingTolerance( 1e-3 ); + bool b = s.Sort( im ); + if( !b ) + { + std::cerr << "Failed to sort DICOM Files:" << std::endl; + //return ; + } + //std::cout << "Sorting succeeded:" << std::endl; + //s.Print( std::cout ); + + //std::cout << "Found z-spacing:" << std::endl; + //std::cout << s.GetZSpacing() << std::endl; + double ippzspacing = s.GetZSpacing(); + + const std::vector & sorted = s.GetFilenames(); + + im.clear(); + int iEED,sizeEED = sorted.size(); + for (iEED = 0; iEED::iterator it = i_filenames.begin(); for (; it != i_filenames.end(); it++) { - bresult = mReader->CanRead((*it).c_str()); + printf("EED SimpleView::readFile .H.H.H %s \n" , (*it).c_str() ); + bresult = mReader->CanRead( (*it).c_str() ); if(bresult) { std::map mapAttr; diff --git a/src/creaImageIOWxGimmickView.cpp b/src/creaImageIOWxGimmickView.cpp index b12662a..c1fe02c 100644 --- a/src/creaImageIOWxGimmickView.cpp +++ b/src/creaImageIOWxGimmickView.cpp @@ -456,6 +456,7 @@ void WxGimmickView::AddBtnTool(wxPanel *panel, wxBoxSizer *sizerH, int id, wxStr // Next we create model and sort files std::vector sort_files(files); + double zspacing = 1; if( !out_model.empty() ) { @@ -474,12 +475,6 @@ void WxGimmickView::AddBtnTool(wxPanel *panel, wxBoxSizer *sizerH, int id, wxStr readImages(outG, sort_files, Oattr, i_dim_out, zspacing); outFileNames = sort_files; } - - - - - //====================================================================== - //====================================================================== -- 2.54.0