X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIODicomImageReader2.cpp;h=53ff687e8393dc23ae96097ea5db07d392188467;hb=3213e0d7adb70f52d723a5b7065f4780b6c9e451;hp=713655ba46ea1fda179f5681b4b2e0b9bcb98dbe;hpb=bf3660569b1baa8be10fc708f595efc66afe3334;p=creaImageIO.git diff --git a/src/creaImageIODicomImageReader2.cpp b/src/creaImageIODicomImageReader2.cpp index 713655b..53ff687 100644 --- a/src/creaImageIODicomImageReader2.cpp +++ b/src/creaImageIODicomImageReader2.cpp @@ -1,6 +1,6 @@ #include - - +#include "gdcmStringFilter.h" +#include "vtkGDCMImageReader.h" #include #include "boost/filesystem/path.hpp" @@ -9,7 +9,7 @@ #include #include - +#include "gdcmUIDs.h" #ifdef _DEBUG #define new DEBUG_NEW #endif @@ -59,6 +59,16 @@ namespace creaImageIO im = 0; } return im; + //gdcm::Tag grouplength(0x0000,0x0000); + //gdcm::DataElement de(gdcm::Tag(0x0000, 0x0000)); + //de.SetByteValue("0",gdcm::VR::UL); + // + // + //gdcm::UIDs::GetUIDString(gdcm::UIDS::uid_1_2_840_10008_1_1),gdcm::VR::UI); + + //std::ostream os; + //de.Write(&os); + } //===================================================================== @@ -94,7 +104,7 @@ namespace creaImageIO void DicomImageReader::getAttributes(const std::string filename, - std::map &infos,std::vector i_attr) + std::map &infos, std::vector i_attr) { gdcm::Reader reader; reader.SetFileName( filename.c_str() ); @@ -112,8 +122,8 @@ namespace creaImageIO } } } - } + //===================================================================== void DicomImageReader::ReadAttributes(const std::string& filename, std::map& attr) @@ -126,40 +136,51 @@ namespace creaImageIO reader.SetFileName( filename.c_str() ); if (reader.Read()) { - std::map::iterator i; - for (i=attr.begin();i!=attr.end();++i) - { - if ( i->first == "D0004_1500" ) + gdcm::StringFilter sf; + sf.SetFile(reader.GetFile()); + std::map::iterator i; + for (i=attr.begin();i!=attr.end();++i) { - boost::filesystem::path full_path(filename); - std::string f = full_path.leaf(); - i->second = f; - } - 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 el; - uint16_t gr; - - tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el); - if ( ( gr!=0 ) && ( el!=0 ) ) - { - - std::string val = GetStringValueFromTag(reader.GetFile().GetDataSet().GetDataElement(gdcm::Tag(gr,el))); - i->second = irclean(val); + if ( i->first == "D0004_1500" ) + { + boost::filesystem::path full_path(filename); + std::string f = full_path.leaf(); + i->second = f; + } + 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 el; + uint16_t gr; + { + gdcm::Attribute< 0x0008,0x103e> at; + std::string sr; + at.SetValue(sr); + + } + tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el); + //if ( ( gr!=0 ) && ( el!=0 ) ) + const gdcm::Tag tag(gr, el); + if( reader.GetFile().GetDataSet().FindDataElement( tag ) ) + { + i->second = irclean(sf.ToString(tag)); + } + else + { + i->second = ""; + } + } } - } } - } } void DicomImageReader::ReadAttributes2(const std::string& filename,