X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIODicomImageReader.cpp;h=35075fb475510623e856e2c4e351dff8a3dd960d;hb=e13ea6551e8721b11998dc33ddccf3f89458f173;hp=95619e5f11ccf6f5a8c3b3fa0de968c2f829effe;hpb=805ec93a6b36ad6acf63458414c545a737322354;p=creaImageIO.git diff --git a/src2/creaImageIODicomImageReader.cpp b/src2/creaImageIODicomImageReader.cpp index 95619e5..35075fb 100644 --- a/src2/creaImageIODicomImageReader.cpp +++ b/src2/creaImageIODicomImageReader.cpp @@ -5,6 +5,7 @@ #include "boost/filesystem/path.hpp" #include +#include namespace creaImageIO { @@ -27,22 +28,18 @@ namespace creaImageIO //===================================================================== bool DicomImageReader::CanRead(const std::string& filename) { - // std::cout << "## Reader "<SetLoadMode( GDCM_NAME_SPACE::LD_ALL); file->SetFileName(filename.c_str()); file->Load(); bool ok = file->IsReadable(); + if(!ok) + { + doc = (GDCM_NAME_SPACE::Document*)file; + ok = doc->IsReadable(); + } file->Delete(); return ok; } @@ -51,9 +48,6 @@ namespace creaImageIO //===================================================================== vtkImageData* DicomImageReader::ReadImage(const std::string& filename) { - // std::cout << "## Reader "<& attr) { - // std::cout << "DicomImageReader::ReadDicomInfo '"<SetLoadMode( GDCM_NAME_SPACE::LD_ALL); + doc->SetFileName(filename.c_str()); + doc->Load(); file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL); file->SetFileName(filename.c_str()); file->Load(); - if (file->IsReadable()) + if (file->IsReadable() ||((GDCM_NAME_SPACE::Document*) file)->IsReadable()) { std::map::iterator i; @@ -126,20 +125,22 @@ namespace creaImageIO else if ( i->first == "FullFileName" ) { i->second = filename; + } + else if ( i->first == "FullFileDirectory" ) + { + std::string::size_type last_pos = filename.find_last_of("//"); + //find first separator + i->second = filename.substr(0, last_pos); } else { uint16_t gr; uint16_t el; tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el); - // GimmickMessage(2,"Key '"<first<<"' : "<GetEntryString(gr,el); i->second = irclean(val); - // GimmickMessage(2,"Key '"<first<<"' : "<